![]() |
![]() |
![]() |
GObject Introspection Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
enum GIInfoType; GIAttributeIter; GIBaseInfo * g_info_new (GIInfoType type
,GIBaseInfo *container
,GITypelib *typelib
,guint32 offset
); GIBaseInfo * g_base_info_ref (GIBaseInfo *info
); void g_base_info_unref (GIBaseInfo *info
); gboolean g_base_info_equal (GIBaseInfo *info1
,GIBaseInfo *info2
); GIInfoType g_base_info_get_type (GIBaseInfo *info
); GITypelib * g_base_info_get_typelib (GIBaseInfo *info
); const gchar * g_base_info_get_namespace (GIBaseInfo *info
); const gchar * g_base_info_get_name (GIBaseInfo *info
); const gchar * g_base_info_get_attribute (GIBaseInfo *info
,const gchar *name
); gboolean g_base_info_iterate_attributes (GIBaseInfo *info
,GIAttributeIter *iterator
,char **name
,char **value
); GIBaseInfo * g_base_info_get_container (GIBaseInfo *info
); gboolean g_base_info_is_deprecated (GIBaseInfo *info
);
GIBaseInfo is the common base struct of all other *Info structs accessible through the GIRepository API. All other structs can be casted to a GIBaseInfo, for instance:
Example 1. Casting a GIFunctionInfo to GIBaseInfo
1 2 |
GIFunctionInfo *function_info = ...; GIBaseInfo *info = (GIBaseInfo*)function_info; |
Most GIRepository APIs returning a GIBaseInfo is actually creating a new struct, in other
words, g_base_info_unref()
has to be called when done accessing the data.
GIBaseInfos are normally accessed by calling either
g_irepository_find_by_name()
, g_irepository_find_by_gtype()
or g_irepository_get_info()
.
Example 2. Getting the Button of the Gtk typelib
1 2 3 |
GIBaseInfo *button_info = g_irepository_find_by_name(NULL, "Gtk", "Button"); ... use button_info ... g_base_info_unref(button_info); |
GIBaseInfo +----GIArgInfo +----GICallableInfo +----GIConstantInfo +----GIFieldInfo +----GIPropertyInfo +----GIRegisteredTypeInfo +----GITypeInfo
typedef enum { GI_INFO_TYPE_INVALID, GI_INFO_TYPE_FUNCTION, GI_INFO_TYPE_CALLBACK, GI_INFO_TYPE_STRUCT, GI_INFO_TYPE_BOXED, GI_INFO_TYPE_ENUM, /* 5 */ GI_INFO_TYPE_FLAGS, GI_INFO_TYPE_OBJECT, GI_INFO_TYPE_INTERFACE, GI_INFO_TYPE_CONSTANT, GI_INFO_TYPE_INVALID_0, /* 10 */ GI_INFO_TYPE_UNION, GI_INFO_TYPE_VALUE, GI_INFO_TYPE_SIGNAL, GI_INFO_TYPE_VFUNC, GI_INFO_TYPE_PROPERTY, /* 15 */ GI_INFO_TYPE_FIELD, GI_INFO_TYPE_ARG, GI_INFO_TYPE_TYPE, GI_INFO_TYPE_UNRESOLVED } GIInfoType;
The type of a GIBaseInfo struct.
invalid type | |
function, see GIFunctionInfo | |
callback, see GIFunctionInfo | |
struct, see GIStructInfo | |
boxed, see GIStructInfo or GIUnionInfo | |
enum, see GIEnumInfo | |
flags, see GIEnumInfo | |
object, see GIObjectInfo | |
interface, see GIInterfaceInfo | |
contant, see GIConstantInfo | |
deleted, used to be GI_INFO_TYPE_ERROR_DOMAIN. | |
union, see GIUnionInfo | |
enum value, see GIValueInfo | |
signal, see GISignalInfo | |
virtual function, see GIVFuncInfo | |
GObject property, see GIPropertyInfo | |
struct or union field, see GIFieldInfo | |
argument of a function or callback, see GIArgInfo | |
type information, see GITypeInfo | |
unresolved type, a type which is not present in the typelib, or any of its dependencies. |
typedef struct { } GIAttributeIter;
An opaque structure used to iterate over attributes in a GIBaseInfo struct.
GIBaseInfo * g_info_new (GIInfoType type
,GIBaseInfo *container
,GITypelib *typelib
,guint32 offset
);
TODO
|
TODO |
|
TODO |
|
TODO |
|
TODO |
Returns : |
TODO |
GIBaseInfo * g_base_info_ref (GIBaseInfo *info
);
Increases the reference count of info
.
|
a GIBaseInfo |
Returns : |
the same info . |
void g_base_info_unref (GIBaseInfo *info
);
Decreases the reference count of info
. When its reference count
drops to 0, the info is freed.
|
a GIBaseInfo |
gboolean g_base_info_equal (GIBaseInfo *info1
,GIBaseInfo *info2
);
Compare two GIBaseInfo.
Using pointer comparison is not practical since many functions return different instances of GIBaseInfo that refers to the same part of the TypeLib; use this function instead to do GIBaseInfo comparisons.
|
a GIBaseInfo |
|
a GIBaseInfo |
Returns : |
TRUE if and only if info1 equals info2 . |
GIInfoType g_base_info_get_type (GIBaseInfo *info
);
Obtain the info type of the GIBaseInfo.
|
a GIBaseInfo |
Returns : |
the info type of info
|
GITypelib * g_base_info_get_typelib (GIBaseInfo *info
);
Obtain the typelib this info
belongs to
|
a GIBaseInfo |
Returns : |
the typelib. [transfer none] |
const gchar * g_base_info_get_namespace (GIBaseInfo *info
);
Obtain the namespace of info
.
|
a GIBaseInfo |
Returns : |
the namespace |
const gchar * g_base_info_get_name (GIBaseInfo *info
);
Obtain the name of the info
. What the name represents depends on
the GIInfoType of the info
. For instance for GIFunctionInfo it is
the name of the function.
|
a GIBaseInfo |
Returns : |
the name of info or NULL if it lacks a name. |
const gchar * g_base_info_get_attribute (GIBaseInfo *info
,const gchar *name
);
Retrieve an arbitrary attribute associated with this node.
|
a GIBaseInfo |
|
a freeform string naming an attribute |
Returns : |
The value of the attribute, or NULL if no such attribute exists |
gboolean g_base_info_iterate_attributes (GIBaseInfo *info
,GIAttributeIter *iterator
,char **name
,char **value
);
Iterate over all attributes associated with this node. The iterator
structure is typically stack allocated, and must have its first
member initialized to NULL
. Attributes are arbitrary namespaced key–value
pairs which can be attached to almost any item. They are intended for use
by software higher in the toolchain than bindings, and are distinct from
normal GIR annotations.
Both the name
and value
should be treated as constants
and must not be freed.
Example 3. Iterating over attributes
1 2 3 4 5 6 7 8 9 10 11 |
void print_attributes (GIBaseInfo *info) { GIAttributeIter iter = { 0, }; char *name; char *value; while (g_base_info_iterate_attributes (info, &iter, &name, &value)) { g_print ("attribute name: %s value: %s", name, value); } } |
|
a GIBaseInfo |
|
a GIAttributeIter structure, must be initialized; see below. [inout] |
|
Returned name, must not be freed. [out][transfer none] |
|
Returned name, must not be freed. [out][transfer none] |
Returns : |
TRUE if there are more attributes |
GIBaseInfo * g_base_info_get_container (GIBaseInfo *info
);
Obtain the container of the info
. The container is the parent
GIBaseInfo. For instance, the parent of a GIFunctionInfo is an
GIObjectInfo or GIInterfaceInfo.
|
a GIBaseInfo |
Returns : |
the container. [transfer none] |