![]() |
![]() |
![]() |
GObject Introspection Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
enum GIInfoType; const gchar * g_info_type_to_string (GIInfoType type
); GIAttributeIter; typedef GIBaseInfo; GIBaseInfo * g_base_info_ref (GIBaseInfo *info
); void g_base_info_unref (GIBaseInfo *info
); GIInfoType g_base_info_get_type (GIBaseInfo *info
); const gchar * g_base_info_get_name (GIBaseInfo *info
); const gchar * g_base_info_get_namespace (GIBaseInfo *info
); gboolean g_base_info_is_deprecated (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
); GITypelib * g_base_info_get_typelib (GIBaseInfo *info
); gboolean g_base_info_equal (GIBaseInfo *info1
,GIBaseInfo *info2
);
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 */ /** DELETED - used to be ERROR_DOMAIN **/ 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 | |
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. |
const gchar * g_info_type_to_string (GIInfoType type
);
Obtain a string representation of type
|
the info type |
Returns : |
the string |
typedef struct { } GIAttributeIter;
An opaque structure used to iterate over attributes in a GIBaseInfo struct.
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 |
GIInfoType g_base_info_get_type (GIBaseInfo *info
);
Obtain the info type of the GIBaseInfo.
|
a GIBaseInfo |
Returns : |
the info type of info
|
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_namespace (GIBaseInfo *info
);
Obtain the namespace of info
.
|
a GIBaseInfo |
Returns : |
the namespace |
gboolean g_base_info_is_deprecated (GIBaseInfo *info
);
Obtain whether the info
is represents a metadata which is
deprecated or not.
|
a GIBaseInfo |
Returns : |
TRUE if deprecated |
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
.
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 |
|
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] |
GITypelib * g_base_info_get_typelib (GIBaseInfo *info
);
Obtain the typelib this info
belongs to
|
a GIBaseInfo |
Returns : |
the typelib. [transfer none] |
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 . |