mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-25 19:11:06 +00:00
gir-files: Import from gir-files at 824aa87
This commit is contained in:
parent
f10d6990e4
commit
9023ce0a94
4 changed files with 7260 additions and 352 deletions
File diff suppressed because it is too large
Load diff
|
@ -262,5 +262,79 @@ directory it will return `\Windows\mylibrary.dll`.</doc>
|
||||||
<type name="gboolean" c:type="gboolean"/>
|
<type name="gboolean" c:type="gboolean"/>
|
||||||
</return-value>
|
</return-value>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="modules">
|
||||||
|
<doc xml:space="preserve">These functions provide a portable way to dynamically load object files
|
||||||
|
(commonly known as 'plug-ins'). The current implementation supports all
|
||||||
|
systems that provide an implementation of dlopen() (e.g. Linux/Sun), as
|
||||||
|
well as Windows platforms via DLLs.
|
||||||
|
|
||||||
|
A program which wants to use these functions must be linked to the
|
||||||
|
libraries output by the command `pkg-config --libs gmodule-2.0`.
|
||||||
|
|
||||||
|
To use them you must first determine whether dynamic loading
|
||||||
|
is supported on the platform by calling g_module_supported().
|
||||||
|
If it is, you can open a module with g_module_open(),
|
||||||
|
find the module's symbols (e.g. function names) with g_module_symbol(),
|
||||||
|
and later close the module with g_module_close().
|
||||||
|
g_module_name() will return the file name of a currently opened module.
|
||||||
|
|
||||||
|
If any of the above functions fail, the error status can be found with
|
||||||
|
g_module_error().
|
||||||
|
|
||||||
|
The #GModule implementation features reference counting for opened modules,
|
||||||
|
and supports hook functions within a module which are called when the
|
||||||
|
module is loaded and unloaded (see #GModuleCheckInit and #GModuleUnload).
|
||||||
|
|
||||||
|
If your module introduces static data to common subsystems in the running
|
||||||
|
program, e.g. through calling
|
||||||
|
`g_quark_from_static_string ("my-module-stuff")`,
|
||||||
|
it must ensure that it is never unloaded, by calling g_module_make_resident().
|
||||||
|
|
||||||
|
Example: Calling a function defined in a GModule
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
// the function signature for 'say_hello'
|
||||||
|
typedef void (* SayHelloFunc) (const char *message);
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
just_say_hello (const char *filename, GError **error)
|
||||||
|
{
|
||||||
|
SayHelloFunc say_hello;
|
||||||
|
GModule *module;
|
||||||
|
|
||||||
|
module = g_module_open (filename, G_MODULE_BIND_LAZY);
|
||||||
|
if (!module)
|
||||||
|
{
|
||||||
|
g_set_error (error, FOO_ERROR, FOO_ERROR_BLAH,
|
||||||
|
"%s", g_module_error ());
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!g_module_symbol (module, "say_hello", (gpointer *)&say_hello))
|
||||||
|
{
|
||||||
|
g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
|
||||||
|
"%s: %s", filename, g_module_error ());
|
||||||
|
if (!g_module_close (module))
|
||||||
|
g_warning ("%s: %s", filename, g_module_error ());
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (say_hello == NULL)
|
||||||
|
{
|
||||||
|
g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
|
||||||
|
"symbol say_hello is NULL");
|
||||||
|
if (!g_module_close (module))
|
||||||
|
g_warning ("%s: %s", filename, g_module_error ());
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// call our function in the module
|
||||||
|
say_hello ("Hello world!");
|
||||||
|
|
||||||
|
if (!g_module_close (module))
|
||||||
|
g_warning ("%s: %s", filename, g_module_error ());
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
]|</doc>
|
||||||
|
</docsection>
|
||||||
</namespace>
|
</namespace>
|
||||||
</repository>
|
</repository>
|
||||||
|
|
|
@ -3040,7 +3040,7 @@ initial reference count, if it is unowned, we instead can write:
|
||||||
g_source_set_closure (source, g_cclosure_new (cb_func, cb_data));
|
g_source_set_closure (source, g_cclosure_new (cb_func, cb_data));
|
||||||
]|
|
]|
|
||||||
|
|
||||||
Generally, this function is used together with g_closure_ref(). Ane example
|
Generally, this function is used together with g_closure_ref(). An example
|
||||||
of storing a closure for later notification looks like:
|
of storing a closure for later notification looks like:
|
||||||
|[<!-- language="C" -->
|
|[<!-- language="C" -->
|
||||||
static GClosure *notify_closure = NULL;
|
static GClosure *notify_closure = NULL;
|
||||||
|
@ -4745,7 +4745,9 @@ to the #GObject implementation and should never be accessed directly.</doc>
|
||||||
<doc xml:space="preserve">Creates a new instance of a #GObject subtype and sets its properties.
|
<doc xml:space="preserve">Creates a new instance of a #GObject subtype and sets its properties.
|
||||||
|
|
||||||
Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
|
Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
|
||||||
which are not explicitly specified are set to their default values.
|
which are not explicitly specified are set to their default values. Any
|
||||||
|
private data for the object is guaranteed to be initialized with zeros, as
|
||||||
|
per g_type_create_instance().
|
||||||
|
|
||||||
Note that in C, small integer types in variable argument lists are promoted
|
Note that in C, small integer types in variable argument lists are promoted
|
||||||
up to #gint or #guint as appropriate, and read back accordingly. #gint is 32
|
up to #gint or #guint as appropriate, and read back accordingly. #gint is 32
|
||||||
|
@ -6126,7 +6128,7 @@ Note that the @destroy callback is not called if @data is %NULL.</doc>
|
||||||
</method>
|
</method>
|
||||||
<method name="set_qdata" c:identifier="g_object_set_qdata" introspectable="0">
|
<method name="set_qdata" c:identifier="g_object_set_qdata" introspectable="0">
|
||||||
<doc xml:space="preserve">This sets an opaque, named pointer on an object.
|
<doc xml:space="preserve">This sets an opaque, named pointer on an object.
|
||||||
The name is specified through a #GQuark (retrived e.g. via
|
The name is specified through a #GQuark (retrieved e.g. via
|
||||||
g_quark_from_static_string()), and the pointer
|
g_quark_from_static_string()), and the pointer
|
||||||
can be gotten back from the @object with g_object_get_qdata()
|
can be gotten back from the @object with g_object_get_qdata()
|
||||||
until the @object is finalized.
|
until the @object is finalized.
|
||||||
|
@ -6270,7 +6272,7 @@ object_add_to_user_list (GObject *object,
|
||||||
{
|
{
|
||||||
// the quark, naming the object data
|
// the quark, naming the object data
|
||||||
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
|
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
|
||||||
// retrive the old string list
|
// retrieve the old string list
|
||||||
GList *list = g_object_steal_qdata (object, quark_string_list);
|
GList *list = g_object_steal_qdata (object, quark_string_list);
|
||||||
|
|
||||||
// prepend new string
|
// prepend new string
|
||||||
|
@ -7326,8 +7328,8 @@ required to specify parameters, such as e.g. #GObject properties.
|
||||||
|
|
||||||
## Parameter names # {#canonical-parameter-names}
|
## Parameter names # {#canonical-parameter-names}
|
||||||
|
|
||||||
A property name consists of segments consisting of ASCII letters and
|
A property name consists of one or more segments consisting of ASCII letters
|
||||||
digits, separated by either the `-` or `_` character. The first
|
and digits, separated by either the `-` or `_` character. The first
|
||||||
character of a property name must be a letter. These are the same rules as
|
character of a property name must be a letter. These are the same rules as
|
||||||
for signal naming (see g_signal_new()).
|
for signal naming (see g_signal_new()).
|
||||||
|
|
||||||
|
@ -7375,6 +7377,25 @@ e.g. a tooltip. The @nick and @blurb should ideally be localized.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<function name="is_valid_name" c:identifier="g_param_spec_is_valid_name" version="2.66">
|
||||||
|
<doc xml:space="preserve">Validate a property name for a #GParamSpec. This can be useful for
|
||||||
|
dynamically-generated properties which need to be validated at run-time
|
||||||
|
before actually trying to create them.
|
||||||
|
|
||||||
|
See [canonical parameter names][canonical-parameter-names] for details of
|
||||||
|
the rules for valid names.</doc>
|
||||||
|
|
||||||
|
<return-value transfer-ownership="none">
|
||||||
|
<doc xml:space="preserve">%TRUE if @name is a valid property name, %FALSE otherwise.</doc>
|
||||||
|
<type name="gboolean" c:type="gboolean"/>
|
||||||
|
</return-value>
|
||||||
|
<parameters>
|
||||||
|
<parameter name="name" transfer-ownership="none">
|
||||||
|
<doc xml:space="preserve">the canonical name of the property</doc>
|
||||||
|
<type name="utf8" c:type="const gchar*"/>
|
||||||
|
</parameter>
|
||||||
|
</parameters>
|
||||||
|
</function>
|
||||||
<virtual-method name="finalize">
|
<virtual-method name="finalize">
|
||||||
|
|
||||||
<return-value transfer-ownership="none">
|
<return-value transfer-ownership="none">
|
||||||
|
@ -7998,7 +8019,7 @@ properties.</doc>
|
||||||
another paramspec. All operations other than getting or
|
another paramspec. All operations other than getting or
|
||||||
setting the value are redirected, including accessing the nick and
|
setting the value are redirected, including accessing the nick and
|
||||||
blurb, validating a value, and so forth. See
|
blurb, validating a value, and so forth. See
|
||||||
g_param_spec_get_redirect_target() for retrieving the overidden
|
g_param_spec_get_redirect_target() for retrieving the overridden
|
||||||
property. #GParamSpecOverride is used in implementing
|
property. #GParamSpecOverride is used in implementing
|
||||||
g_object_class_override_property(), and will not be directly useful
|
g_object_class_override_property(), and will not be directly useful
|
||||||
unless you are implementing a new base type similar to GObject.</doc>
|
unless you are implementing a new base type similar to GObject.</doc>
|
||||||
|
@ -10676,10 +10697,26 @@ from type %G_TYPE_BOXED.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function-macro>
|
</function-macro>
|
||||||
|
<constant name="VALUE_INTERNED_STRING" value="268435456" c:type="G_VALUE_INTERNED_STRING" version="2.66">
|
||||||
|
<doc xml:space="preserve">For string values, indicates that the string contained is canonical and will
|
||||||
|
exist for the duration of the process. See g_value_set_interned_string().</doc>
|
||||||
|
|
||||||
|
<type name="gint" c:type="gint"/>
|
||||||
|
</constant>
|
||||||
|
<function-macro name="VALUE_IS_INTERNED_STRING" c:identifier="G_VALUE_IS_INTERNED_STRING" version="2.66" introspectable="0">
|
||||||
|
<doc xml:space="preserve">Checks whether @value contains a string which is canonical.</doc>
|
||||||
|
|
||||||
|
<parameters>
|
||||||
|
<parameter name="value">
|
||||||
|
<doc xml:space="preserve">a valid #GValue structure</doc>
|
||||||
|
</parameter>
|
||||||
|
</parameters>
|
||||||
|
</function-macro>
|
||||||
<constant name="VALUE_NOCOPY_CONTENTS" value="134217728" c:type="G_VALUE_NOCOPY_CONTENTS">
|
<constant name="VALUE_NOCOPY_CONTENTS" value="134217728" c:type="G_VALUE_NOCOPY_CONTENTS">
|
||||||
<doc xml:space="preserve">If passed to G_VALUE_COLLECT(), allocated data won't be copied
|
<doc xml:space="preserve">If passed to G_VALUE_COLLECT(), allocated data won't be copied
|
||||||
but used verbatim. This does not affect ref-counted types like
|
but used verbatim. This does not affect ref-counted types like
|
||||||
objects.</doc>
|
objects. This does not affect usage of g_value_copy(), the data will
|
||||||
|
be copied if it is not ref-counted.</doc>
|
||||||
|
|
||||||
<type name="gint" c:type="gint"/>
|
<type name="gint" c:type="gint"/>
|
||||||
</constant>
|
</constant>
|
||||||
|
@ -11455,6 +11492,25 @@ value_table's collect_value() function.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="set_interned_string" c:identifier="g_value_set_interned_string" version="2.66">
|
||||||
|
<doc xml:space="preserve">Set the contents of a %G_TYPE_STRING #GValue to @v_string. The string is
|
||||||
|
assumed to be static and interned (canonical, for example from
|
||||||
|
g_intern_string()), and is thus not duplicated when setting the #GValue.</doc>
|
||||||
|
|
||||||
|
<return-value transfer-ownership="none">
|
||||||
|
<type name="none" c:type="void"/>
|
||||||
|
</return-value>
|
||||||
|
<parameters>
|
||||||
|
<instance-parameter name="value" transfer-ownership="none">
|
||||||
|
<doc xml:space="preserve">a valid #GValue of type %G_TYPE_STRING</doc>
|
||||||
|
<type name="Value" c:type="GValue*"/>
|
||||||
|
</instance-parameter>
|
||||||
|
<parameter name="v_string" transfer-ownership="none" nullable="1" allow-none="1">
|
||||||
|
<doc xml:space="preserve">static string to be set</doc>
|
||||||
|
<type name="utf8" c:type="const gchar*"/>
|
||||||
|
</parameter>
|
||||||
|
</parameters>
|
||||||
|
</method>
|
||||||
<method name="set_long" c:identifier="g_value_set_long">
|
<method name="set_long" c:identifier="g_value_set_long">
|
||||||
<doc xml:space="preserve">Set the contents of a %G_TYPE_LONG #GValue to @v_long.</doc>
|
<doc xml:space="preserve">Set the contents of a %G_TYPE_LONG #GValue to @v_long.</doc>
|
||||||
|
|
||||||
|
@ -11608,7 +11664,10 @@ when setting the #GValue.</doc>
|
||||||
<method name="set_static_string" c:identifier="g_value_set_static_string">
|
<method name="set_static_string" c:identifier="g_value_set_static_string">
|
||||||
<doc xml:space="preserve">Set the contents of a %G_TYPE_STRING #GValue to @v_string.
|
<doc xml:space="preserve">Set the contents of a %G_TYPE_STRING #GValue to @v_string.
|
||||||
The string is assumed to be static, and is thus not duplicated
|
The string is assumed to be static, and is thus not duplicated
|
||||||
when setting the #GValue.</doc>
|
when setting the #GValue.
|
||||||
|
|
||||||
|
If the the string is a canonical string, using g_value_set_interned_string()
|
||||||
|
is more appropriate.</doc>
|
||||||
|
|
||||||
<return-value transfer-ownership="none">
|
<return-value transfer-ownership="none">
|
||||||
<type name="none" c:type="void"/>
|
<type name="none" c:type="void"/>
|
||||||
|
@ -13559,6 +13618,35 @@ may change in the future.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="enumerations_flags">
|
||||||
|
<doc xml:space="preserve">The GLib type system provides fundamental types for enumeration and
|
||||||
|
flags types. (Flags types are like enumerations, but allow their
|
||||||
|
values to be combined by bitwise or). A registered enumeration or
|
||||||
|
flags type associates a name and a nickname with each allowed
|
||||||
|
value, and the methods g_enum_get_value_by_name(),
|
||||||
|
g_enum_get_value_by_nick(), g_flags_get_value_by_name() and
|
||||||
|
g_flags_get_value_by_nick() can look up values by their name or
|
||||||
|
nickname. When an enumeration or flags type is registered with the
|
||||||
|
GLib type system, it can be used as value type for object
|
||||||
|
properties, using g_param_spec_enum() or g_param_spec_flags().
|
||||||
|
|
||||||
|
GObject ships with a utility called [glib-mkenums][glib-mkenums],
|
||||||
|
that can construct suitable type registration functions from C enumeration
|
||||||
|
definitions.
|
||||||
|
|
||||||
|
Example of how to get a string representation of an enum value:
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
GEnumClass *enum_class;
|
||||||
|
GEnumValue *enum_value;
|
||||||
|
|
||||||
|
enum_class = g_type_class_ref (MAMAN_TYPE_MY_ENUM);
|
||||||
|
enum_value = g_enum_get_value (enum_class, MAMAN_MY_ENUM_FOO);
|
||||||
|
|
||||||
|
g_print ("Name: %s\n", enum_value->value_name);
|
||||||
|
|
||||||
|
g_type_class_unref (enum_class);
|
||||||
|
]|</doc>
|
||||||
|
</docsection>
|
||||||
<function name="flags_complete_type_info" c:identifier="g_flags_complete_type_info">
|
<function name="flags_complete_type_info" c:identifier="g_flags_complete_type_info">
|
||||||
<doc xml:space="preserve">This function is meant to be called from the complete_type_info()
|
<doc xml:space="preserve">This function is meant to be called from the complete_type_info()
|
||||||
function of a #GTypePlugin implementation, see the example for
|
function of a #GTypePlugin implementation, see the example for
|
||||||
|
@ -13687,12 +13775,231 @@ may change in the future.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="gboxed">
|
||||||
|
<doc xml:space="preserve">#GBoxed is a generic wrapper mechanism for arbitrary C structures. The only
|
||||||
|
thing the type system needs to know about the structures is how to copy them
|
||||||
|
(a #GBoxedCopyFunc) and how to free them (a #GBoxedFreeFunc) — beyond that
|
||||||
|
they are treated as opaque chunks of memory.
|
||||||
|
|
||||||
|
Boxed types are useful for simple value-holder structures like rectangles or
|
||||||
|
points. They can also be used for wrapping structures defined in non-#GObject
|
||||||
|
based libraries. They allow arbitrary structures to be handled in a uniform
|
||||||
|
way, allowing uniform copying (or referencing) and freeing (or unreferencing)
|
||||||
|
of them, and uniform representation of the type of the contained structure.
|
||||||
|
In turn, this allows any type which can be boxed to be set as the data in a
|
||||||
|
#GValue, which allows for polymorphic handling of a much wider range of data
|
||||||
|
types, and hence usage of such types as #GObject property values.
|
||||||
|
|
||||||
|
#GBoxed is designed so that reference counted types can be boxed. Use the
|
||||||
|
type’s ‘ref’ function as the #GBoxedCopyFunc, and its ‘unref’ function as the
|
||||||
|
#GBoxedFreeFunc. For example, for #GBytes, the #GBoxedCopyFunc is
|
||||||
|
g_bytes_ref(), and the #GBoxedFreeFunc is g_bytes_unref().</doc>
|
||||||
|
</docsection>
|
||||||
|
<docsection name="generic_values">
|
||||||
|
<doc xml:space="preserve">The #GValue structure is basically a variable container that consists
|
||||||
|
of a type identifier and a specific value of that type.
|
||||||
|
The type identifier within a #GValue structure always determines the
|
||||||
|
type of the associated value.
|
||||||
|
To create an undefined #GValue structure, simply create a zero-filled
|
||||||
|
#GValue structure. To initialize the #GValue, use the g_value_init()
|
||||||
|
function. A #GValue cannot be used until it is initialized.
|
||||||
|
The basic type operations (such as freeing and copying) are determined
|
||||||
|
by the #GTypeValueTable associated with the type ID stored in the #GValue.
|
||||||
|
Other #GValue operations (such as converting values between types) are
|
||||||
|
provided by this interface.
|
||||||
|
|
||||||
|
The code in the example program below demonstrates #GValue's
|
||||||
|
features.
|
||||||
|
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
static void
|
||||||
|
int2string (const GValue *src_value,
|
||||||
|
GValue *dest_value)
|
||||||
|
{
|
||||||
|
if (g_value_get_int (src_value) == 42)
|
||||||
|
g_value_set_static_string (dest_value, "An important number");
|
||||||
|
else
|
||||||
|
g_value_set_static_string (dest_value, "What's that?");
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc,
|
||||||
|
char *argv[])
|
||||||
|
{
|
||||||
|
// GValues must be initialized
|
||||||
|
GValue a = G_VALUE_INIT;
|
||||||
|
GValue b = G_VALUE_INIT;
|
||||||
|
const gchar *message;
|
||||||
|
|
||||||
|
// The GValue starts empty
|
||||||
|
g_assert (!G_VALUE_HOLDS_STRING (&a));
|
||||||
|
|
||||||
|
// Put a string in it
|
||||||
|
g_value_init (&a, G_TYPE_STRING);
|
||||||
|
g_assert (G_VALUE_HOLDS_STRING (&a));
|
||||||
|
g_value_set_static_string (&a, "Hello, world!");
|
||||||
|
g_printf ("%s\n", g_value_get_string (&a));
|
||||||
|
|
||||||
|
// Reset it to its pristine state
|
||||||
|
g_value_unset (&a);
|
||||||
|
|
||||||
|
// It can then be reused for another type
|
||||||
|
g_value_init (&a, G_TYPE_INT);
|
||||||
|
g_value_set_int (&a, 42);
|
||||||
|
|
||||||
|
// Attempt to transform it into a GValue of type STRING
|
||||||
|
g_value_init (&b, G_TYPE_STRING);
|
||||||
|
|
||||||
|
// An INT is transformable to a STRING
|
||||||
|
g_assert (g_value_type_transformable (G_TYPE_INT, G_TYPE_STRING));
|
||||||
|
|
||||||
|
g_value_transform (&a, &b);
|
||||||
|
g_printf ("%s\n", g_value_get_string (&b));
|
||||||
|
|
||||||
|
// Attempt to transform it again using a custom transform function
|
||||||
|
g_value_register_transform_func (G_TYPE_INT, G_TYPE_STRING, int2string);
|
||||||
|
g_value_transform (&a, &b);
|
||||||
|
g_printf ("%s\n", g_value_get_string (&b));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
]|</doc>
|
||||||
|
</docsection>
|
||||||
|
<docsection name="gtype">
|
||||||
|
<doc xml:space="preserve">The GType API is the foundation of the GObject system. It provides the
|
||||||
|
facilities for registering and managing all fundamental data types,
|
||||||
|
user-defined object and interface types.
|
||||||
|
|
||||||
|
For type creation and registration purposes, all types fall into one of
|
||||||
|
two categories: static or dynamic. Static types are never loaded or
|
||||||
|
unloaded at run-time as dynamic types may be. Static types are created
|
||||||
|
with g_type_register_static() that gets type specific information passed
|
||||||
|
in via a #GTypeInfo structure.
|
||||||
|
|
||||||
|
Dynamic types are created with g_type_register_dynamic() which takes a
|
||||||
|
#GTypePlugin structure instead. The remaining type information (the
|
||||||
|
#GTypeInfo structure) is retrieved during runtime through #GTypePlugin
|
||||||
|
and the g_type_plugin_*() API.
|
||||||
|
|
||||||
|
These registration functions are usually called only once from a
|
||||||
|
function whose only purpose is to return the type identifier for a
|
||||||
|
specific class. Once the type (or class or interface) is registered,
|
||||||
|
it may be instantiated, inherited, or implemented depending on exactly
|
||||||
|
what sort of type it is.
|
||||||
|
|
||||||
|
There is also a third registration function for registering fundamental
|
||||||
|
types called g_type_register_fundamental() which requires both a #GTypeInfo
|
||||||
|
structure and a #GTypeFundamentalInfo structure but it is seldom used
|
||||||
|
since most fundamental types are predefined rather than user-defined.
|
||||||
|
|
||||||
|
Type instance and class structs are limited to a total of 64 KiB,
|
||||||
|
including all parent types. Similarly, type instances' private data
|
||||||
|
(as created by G_ADD_PRIVATE()) are limited to a total of
|
||||||
|
64 KiB. If a type instance needs a large static buffer, allocate it
|
||||||
|
separately (typically by using #GArray or #GPtrArray) and put a pointer
|
||||||
|
to the buffer in the structure.
|
||||||
|
|
||||||
|
As mentioned in the [GType conventions][gtype-conventions], type names must
|
||||||
|
be at least three characters long. There is no upper length limit. The first
|
||||||
|
character must be a letter (a–z or A–Z) or an underscore (‘_’). Subsequent
|
||||||
|
characters can be letters, numbers or any of ‘-_+’.</doc>
|
||||||
|
</docsection>
|
||||||
<function name="gtype_get_type" c:identifier="g_gtype_get_type">
|
<function name="gtype_get_type" c:identifier="g_gtype_get_type">
|
||||||
|
|
||||||
<return-value transfer-ownership="none">
|
<return-value transfer-ownership="none">
|
||||||
<type name="GType" c:type="GType"/>
|
<type name="GType" c:type="GType"/>
|
||||||
</return-value>
|
</return-value>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="objects">
|
||||||
|
<doc xml:space="preserve">GObject is the fundamental type providing the common attributes and
|
||||||
|
methods for all object types in GTK+, Pango and other libraries
|
||||||
|
based on GObject. The GObject class provides methods for object
|
||||||
|
construction and destruction, property access methods, and signal
|
||||||
|
support. Signals are described in detail [here][gobject-Signals].
|
||||||
|
|
||||||
|
For a tutorial on implementing a new GObject class, see [How to define and
|
||||||
|
implement a new GObject][howto-gobject]. For a list of naming conventions for
|
||||||
|
GObjects and their methods, see the [GType conventions][gtype-conventions].
|
||||||
|
For the high-level concepts behind GObject, read [Instantiable classed types:
|
||||||
|
Objects][gtype-instantiable-classed].
|
||||||
|
|
||||||
|
## Floating references # {#floating-ref}
|
||||||
|
|
||||||
|
**Note**: Floating references are a C convenience API and should not be
|
||||||
|
used in modern GObject code. Language bindings in particular find the
|
||||||
|
concept highly problematic, as floating references are not identifiable
|
||||||
|
through annotations, and neither are deviations from the floating reference
|
||||||
|
behavior, like types that inherit from #GInitiallyUnowned and still return
|
||||||
|
a full reference from g_object_new().
|
||||||
|
|
||||||
|
GInitiallyUnowned is derived from GObject. The only difference between
|
||||||
|
the two is that the initial reference of a GInitiallyUnowned is flagged
|
||||||
|
as a "floating" reference. This means that it is not specifically
|
||||||
|
claimed to be "owned" by any code portion. The main motivation for
|
||||||
|
providing floating references is C convenience. In particular, it
|
||||||
|
allows code to be written as:
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
container = create_container ();
|
||||||
|
container_add_child (container, create_child());
|
||||||
|
]|
|
||||||
|
If container_add_child() calls g_object_ref_sink() on the passed-in child,
|
||||||
|
no reference of the newly created child is leaked. Without floating
|
||||||
|
references, container_add_child() can only g_object_ref() the new child,
|
||||||
|
so to implement this code without reference leaks, it would have to be
|
||||||
|
written as:
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
Child *child;
|
||||||
|
container = create_container ();
|
||||||
|
child = create_child ();
|
||||||
|
container_add_child (container, child);
|
||||||
|
g_object_unref (child);
|
||||||
|
]|
|
||||||
|
The floating reference can be converted into an ordinary reference by
|
||||||
|
calling g_object_ref_sink(). For already sunken objects (objects that
|
||||||
|
don't have a floating reference anymore), g_object_ref_sink() is equivalent
|
||||||
|
to g_object_ref() and returns a new reference.
|
||||||
|
|
||||||
|
Since floating references are useful almost exclusively for C convenience,
|
||||||
|
language bindings that provide automated reference and memory ownership
|
||||||
|
maintenance (such as smart pointers or garbage collection) should not
|
||||||
|
expose floating references in their API. The best practice for handling
|
||||||
|
types that have initially floating references is to immediately sink those
|
||||||
|
references after g_object_new() returns, by checking if the #GType
|
||||||
|
inherits from #GInitiallyUnowned. For instance:
|
||||||
|
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
GObject *res = g_object_new_with_properties (gtype,
|
||||||
|
n_props,
|
||||||
|
prop_names,
|
||||||
|
prop_values);
|
||||||
|
|
||||||
|
// or: if (g_type_is_a (gtype, G_TYPE_INITIALLY_UNOWNED))
|
||||||
|
if (G_IS_INITIALLY_UNOWNED (res))
|
||||||
|
g_object_ref_sink (res);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
]|
|
||||||
|
|
||||||
|
Some object implementations may need to save an objects floating state
|
||||||
|
across certain code portions (an example is #GtkMenu), to achieve this,
|
||||||
|
the following sequence can be used:
|
||||||
|
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
// save floating state
|
||||||
|
gboolean was_floating = g_object_is_floating (object);
|
||||||
|
g_object_ref_sink (object);
|
||||||
|
// protected code portion
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
// restore floating state
|
||||||
|
if (was_floating)
|
||||||
|
g_object_force_floating (object);
|
||||||
|
else
|
||||||
|
g_object_unref (object); // release previously acquired reference
|
||||||
|
]|</doc>
|
||||||
|
</docsection>
|
||||||
<function name="param_spec_boolean" c:identifier="g_param_spec_boolean">
|
<function name="param_spec_boolean" c:identifier="g_param_spec_boolean">
|
||||||
<doc xml:space="preserve">Creates a new #GParamSpecBoolean instance specifying a %G_TYPE_BOOLEAN
|
<doc xml:space="preserve">Creates a new #GParamSpecBoolean instance specifying a %G_TYPE_BOOLEAN
|
||||||
property. In many cases, it may be more appropriate to use an enum with
|
property. In many cases, it may be more appropriate to use an enum with
|
||||||
|
@ -14587,7 +14894,7 @@ g_param_value_validate().</doc>
|
||||||
<type name="ParamSpec" c:type="GParamSpec*"/>
|
<type name="ParamSpec" c:type="GParamSpec*"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="src_value" transfer-ownership="none">
|
<parameter name="src_value" transfer-ownership="none">
|
||||||
<doc xml:space="preserve">souce #GValue</doc>
|
<doc xml:space="preserve">source #GValue</doc>
|
||||||
<type name="Value" c:type="const GValue*"/>
|
<type name="Value" c:type="const GValue*"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="dest_value" transfer-ownership="none">
|
<parameter name="dest_value" transfer-ownership="none">
|
||||||
|
@ -14637,6 +14944,19 @@ without modifications</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="param_value_types">
|
||||||
|
<doc xml:space="preserve">#GValue provides an abstract container structure which can be
|
||||||
|
copied, transformed and compared while holding a value of any
|
||||||
|
(derived) type, which is registered as a #GType with a
|
||||||
|
#GTypeValueTable in its #GTypeInfo structure. Parameter
|
||||||
|
specifications for most value types can be created as #GParamSpec
|
||||||
|
derived instances, to implement e.g. #GObject properties which
|
||||||
|
operate on #GValue containers.
|
||||||
|
|
||||||
|
Parameter names need to start with a letter (a-z or A-Z). Subsequent
|
||||||
|
characters can be letters, numbers or a '-'.
|
||||||
|
All other characters are replaced by a '-' during construction.</doc>
|
||||||
|
</docsection>
|
||||||
<function name="param_value_validate" c:identifier="g_param_value_validate">
|
<function name="param_value_validate" c:identifier="g_param_value_validate">
|
||||||
<doc xml:space="preserve">Ensures that the contents of @value comply with the specifications
|
<doc xml:space="preserve">Ensures that the contents of @value comply with the specifications
|
||||||
set out by @pspec. For example, a #GParamSpecInt might require
|
set out by @pspec. For example, a #GParamSpecInt might require
|
||||||
|
@ -14738,7 +15058,7 @@ One convenient usage of this function is in implementing property setters:
|
||||||
<function-macro name="set_weak_pointer" c:identifier="g_set_weak_pointer" version="2.56" introspectable="0">
|
<function-macro name="set_weak_pointer" c:identifier="g_set_weak_pointer" version="2.56" introspectable="0">
|
||||||
<doc xml:space="preserve">Updates a pointer to weakly refer to @new_object. It assigns @new_object
|
<doc xml:space="preserve">Updates a pointer to weakly refer to @new_object. It assigns @new_object
|
||||||
to @weak_pointer_location and ensures that @weak_pointer_location will
|
to @weak_pointer_location and ensures that @weak_pointer_location will
|
||||||
automaticaly be set to %NULL if @new_object gets destroyed. The assignment
|
automatically be set to %NULL if @new_object gets destroyed. The assignment
|
||||||
is not atomic. The weak reference is not thread-safe, see
|
is not atomic. The weak reference is not thread-safe, see
|
||||||
g_object_add_weak_pointer() for details.
|
g_object_add_weak_pointer() for details.
|
||||||
|
|
||||||
|
@ -15276,7 +15596,7 @@ specified signal returns a value, but may be ignored otherwise.</doc>
|
||||||
<function name="signal_handler_block" c:identifier="g_signal_handler_block">
|
<function name="signal_handler_block" c:identifier="g_signal_handler_block">
|
||||||
<doc xml:space="preserve">Blocks a handler of an instance so it will not be called during any
|
<doc xml:space="preserve">Blocks a handler of an instance so it will not be called during any
|
||||||
signal emissions unless it is unblocked again. Thus "blocking" a
|
signal emissions unless it is unblocked again. Thus "blocking" a
|
||||||
signal handler means to temporarily deactive it, a signal handler
|
signal handler means to temporarily deactivate it, a signal handler
|
||||||
has to be unblocked exactly the same amount of times it has been
|
has to be unblocked exactly the same amount of times it has been
|
||||||
blocked before to become active again.
|
blocked before to become active again.
|
||||||
|
|
||||||
|
@ -15660,6 +15980,25 @@ of building the arguments.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<function name="signal_is_valid_name" c:identifier="g_signal_is_valid_name" version="2.66">
|
||||||
|
<doc xml:space="preserve">Validate a signal name. This can be useful for dynamically-generated signals
|
||||||
|
which need to be validated at run-time before actually trying to create them.
|
||||||
|
|
||||||
|
See [canonical parameter names][canonical-parameter-names] for details of
|
||||||
|
the rules for valid names. The rules for signal names are the same as those
|
||||||
|
for property names.</doc>
|
||||||
|
|
||||||
|
<return-value transfer-ownership="none">
|
||||||
|
<doc xml:space="preserve">%TRUE if @name is a valid signal name, %FALSE otherwise.</doc>
|
||||||
|
<type name="gboolean" c:type="gboolean"/>
|
||||||
|
</return-value>
|
||||||
|
<parameters>
|
||||||
|
<parameter name="name" transfer-ownership="none">
|
||||||
|
<doc xml:space="preserve">the canonical name of the signal</doc>
|
||||||
|
<type name="utf8" c:type="const gchar*"/>
|
||||||
|
</parameter>
|
||||||
|
</parameters>
|
||||||
|
</function>
|
||||||
<function name="signal_list_ids" c:identifier="g_signal_list_ids">
|
<function name="signal_list_ids" c:identifier="g_signal_list_ids">
|
||||||
<doc xml:space="preserve">Lists the signals by id that a certain instance or interface type
|
<doc xml:space="preserve">Lists the signals by id that a certain instance or interface type
|
||||||
created. Further information about the signals can be acquired through
|
created. Further information about the signals can be acquired through
|
||||||
|
@ -15813,7 +16152,7 @@ This is a variant of g_signal_new() that takes a C callback instead
|
||||||
of a class offset for the signal's class handler. This function
|
of a class offset for the signal's class handler. This function
|
||||||
doesn't need a function pointer exposed in the class structure of
|
doesn't need a function pointer exposed in the class structure of
|
||||||
an object definition, instead the function pointer is passed
|
an object definition, instead the function pointer is passed
|
||||||
directly and can be overriden by derived classes with
|
directly and can be overridden by derived classes with
|
||||||
g_signal_override_class_closure() or
|
g_signal_override_class_closure() or
|
||||||
g_signal_override_class_handler()and chained to with
|
g_signal_override_class_handler()and chained to with
|
||||||
g_signal_chain_from_overridden() or
|
g_signal_chain_from_overridden() or
|
||||||
|
@ -16224,6 +16563,92 @@ identified by @itype.</doc>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="signals">
|
||||||
|
<doc xml:space="preserve">The basic concept of the signal system is that of the emission
|
||||||
|
of a signal. Signals are introduced per-type and are identified
|
||||||
|
through strings. Signals introduced for a parent type are available
|
||||||
|
in derived types as well, so basically they are a per-type facility
|
||||||
|
that is inherited.
|
||||||
|
|
||||||
|
A signal emission mainly involves invocation of a certain set of
|
||||||
|
callbacks in precisely defined manner. There are two main categories
|
||||||
|
of such callbacks, per-object ones and user provided ones.
|
||||||
|
(Although signals can deal with any kind of instantiatable type, I'm
|
||||||
|
referring to those types as "object types" in the following, simply
|
||||||
|
because that is the context most users will encounter signals in.)
|
||||||
|
The per-object callbacks are most often referred to as "object method
|
||||||
|
handler" or "default (signal) handler", while user provided callbacks are
|
||||||
|
usually just called "signal handler".
|
||||||
|
|
||||||
|
The object method handler is provided at signal creation time (this most
|
||||||
|
frequently happens at the end of an object class' creation), while user
|
||||||
|
provided handlers are frequently connected and disconnected to/from a
|
||||||
|
certain signal on certain object instances.
|
||||||
|
|
||||||
|
A signal emission consists of five stages, unless prematurely stopped:
|
||||||
|
|
||||||
|
1. Invocation of the object method handler for %G_SIGNAL_RUN_FIRST signals
|
||||||
|
|
||||||
|
2. Invocation of normal user-provided signal handlers (where the @after
|
||||||
|
flag is not set)
|
||||||
|
|
||||||
|
3. Invocation of the object method handler for %G_SIGNAL_RUN_LAST signals
|
||||||
|
|
||||||
|
4. Invocation of user provided signal handlers (where the @after flag is set)
|
||||||
|
|
||||||
|
5. Invocation of the object method handler for %G_SIGNAL_RUN_CLEANUP signals
|
||||||
|
|
||||||
|
The user-provided signal handlers are called in the order they were
|
||||||
|
connected in.
|
||||||
|
|
||||||
|
All handlers may prematurely stop a signal emission, and any number of
|
||||||
|
handlers may be connected, disconnected, blocked or unblocked during
|
||||||
|
a signal emission.
|
||||||
|
|
||||||
|
There are certain criteria for skipping user handlers in stages 2 and 4
|
||||||
|
of a signal emission.
|
||||||
|
|
||||||
|
First, user handlers may be blocked. Blocked handlers are omitted during
|
||||||
|
callback invocation, to return from the blocked state, a handler has to
|
||||||
|
get unblocked exactly the same amount of times it has been blocked before.
|
||||||
|
|
||||||
|
Second, upon emission of a %G_SIGNAL_DETAILED signal, an additional
|
||||||
|
@detail argument passed in to g_signal_emit() has to match the detail
|
||||||
|
argument of the signal handler currently subject to invocation.
|
||||||
|
Specification of no detail argument for signal handlers (omission of the
|
||||||
|
detail part of the signal specification upon connection) serves as a
|
||||||
|
wildcard and matches any detail argument passed in to emission.
|
||||||
|
|
||||||
|
While the @detail argument is typically used to pass an object property name
|
||||||
|
(as with #GObject::notify), no specific format is mandated for the detail
|
||||||
|
string, other than that it must be non-empty.
|
||||||
|
|
||||||
|
## Memory management of signal handlers # {#signal-memory-management}
|
||||||
|
|
||||||
|
If you are connecting handlers to signals and using a #GObject instance as
|
||||||
|
your signal handler user data, you should remember to pair calls to
|
||||||
|
g_signal_connect() with calls to g_signal_handler_disconnect() or
|
||||||
|
g_signal_handlers_disconnect_by_func(). While signal handlers are
|
||||||
|
automatically disconnected when the object emitting the signal is finalised,
|
||||||
|
they are not automatically disconnected when the signal handler user data is
|
||||||
|
destroyed. If this user data is a #GObject instance, using it from a
|
||||||
|
signal handler after it has been finalised is an error.
|
||||||
|
|
||||||
|
There are two strategies for managing such user data. The first is to
|
||||||
|
disconnect the signal handler (using g_signal_handler_disconnect() or
|
||||||
|
g_signal_handlers_disconnect_by_func()) when the user data (object) is
|
||||||
|
finalised; this has to be implemented manually. For non-threaded programs,
|
||||||
|
g_signal_connect_object() can be used to implement this automatically.
|
||||||
|
Currently, however, it is unsafe to use in threaded programs.
|
||||||
|
|
||||||
|
The second is to hold a strong reference on the user data until after the
|
||||||
|
signal is disconnected for other reasons. This can be implemented
|
||||||
|
automatically using g_signal_connect_data().
|
||||||
|
|
||||||
|
The first approach is recommended, as the second approach can result in
|
||||||
|
effective memory leaks of the user data if the signal handler is never
|
||||||
|
disconnected for some reason.</doc>
|
||||||
|
</docsection>
|
||||||
<function name="source_set_closure" c:identifier="g_source_set_closure">
|
<function name="source_set_closure" c:identifier="g_source_set_closure">
|
||||||
<doc xml:space="preserve">Set the callback for a source as a #GClosure.
|
<doc xml:space="preserve">Set the callback for a source as a #GClosure.
|
||||||
|
|
||||||
|
@ -16638,7 +17063,7 @@ can be instantiated. The type system only performs basic allocation
|
||||||
and structure setups for instances: actual instance creation should
|
and structure setups for instances: actual instance creation should
|
||||||
happen through functions supplied by the type's fundamental type
|
happen through functions supplied by the type's fundamental type
|
||||||
implementation. So use of g_type_create_instance() is reserved for
|
implementation. So use of g_type_create_instance() is reserved for
|
||||||
implementators of fundamental types only. E.g. instances of the
|
implementers of fundamental types only. E.g. instances of the
|
||||||
#GObject hierarchy should be created via g_object_new() and never
|
#GObject hierarchy should be created via g_object_new() and never
|
||||||
directly through g_type_create_instance() which doesn't handle things
|
directly through g_type_create_instance() which doesn't handle things
|
||||||
like singleton objects or object construction.
|
like singleton objects or object construction.
|
||||||
|
@ -16684,7 +17109,7 @@ default interface vtable.</doc>
|
||||||
and returns the default interface vtable for the type.
|
and returns the default interface vtable for the type.
|
||||||
|
|
||||||
If the type is not currently in use, then the default vtable
|
If the type is not currently in use, then the default vtable
|
||||||
for the type will be created and initalized by calling
|
for the type will be created and initialized by calling
|
||||||
the base interface init and default vtable init functions for
|
the base interface init and default vtable init functions for
|
||||||
the type (the @base_init and @class_init members of #GTypeInfo).
|
the type (the @base_init and @class_init members of #GTypeInfo).
|
||||||
Calling g_type_default_interface_ref() is useful when you
|
Calling g_type_default_interface_ref() is useful when you
|
||||||
|
@ -17395,6 +17820,29 @@ that implements or has internal knowledge of the implementation of
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
</function>
|
</function>
|
||||||
|
<docsection name="value_arrays">
|
||||||
|
<doc xml:space="preserve">The prime purpose of a #GValueArray is for it to be used as an
|
||||||
|
object property that holds an array of values. A #GValueArray wraps
|
||||||
|
an array of #GValue elements in order for it to be used as a boxed
|
||||||
|
type through %G_TYPE_VALUE_ARRAY.
|
||||||
|
|
||||||
|
#GValueArray is deprecated in favour of #GArray since GLib 2.32. It
|
||||||
|
is possible to create a #GArray that behaves like a #GValueArray by
|
||||||
|
using the size of #GValue as the element size, and by setting
|
||||||
|
g_value_unset() as the clear function using g_array_set_clear_func(),
|
||||||
|
for instance, the following code:
|
||||||
|
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
GValueArray *array = g_value_array_new (10);
|
||||||
|
]|
|
||||||
|
|
||||||
|
can be replaced by:
|
||||||
|
|
||||||
|
|[<!-- language="C" -->
|
||||||
|
GArray *array = g_array_sized_new (FALSE, TRUE, sizeof (GValue), 10);
|
||||||
|
g_array_set_clear_func (array, (GDestroyNotify) g_value_unset);
|
||||||
|
]|</doc>
|
||||||
|
</docsection>
|
||||||
<function name="value_register_transform_func" c:identifier="g_value_register_transform_func" moved-to="Value.register_transform_func" introspectable="0">
|
<function name="value_register_transform_func" c:identifier="g_value_register_transform_func" moved-to="Value.register_transform_func" introspectable="0">
|
||||||
<doc xml:space="preserve">Registers a value transformation function for use in g_value_transform().
|
<doc xml:space="preserve">Registers a value transformation function for use in g_value_transform().
|
||||||
A previously registered transformation function for @src_type and @dest_type
|
A previously registered transformation function for @src_type and @dest_type
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue