Top | ![]() |
![]() |
![]() |
![]() |
GIBaseInfo * | g_info_new () |
GIBaseInfo * | g_base_info_ref () |
void | g_base_info_unref () |
gboolean | g_base_info_equal () |
GIInfoType | g_base_info_get_type () |
GITypelib * | g_base_info_get_typelib () |
const gchar * | g_base_info_get_namespace () |
const gchar * | g_base_info_get_name () |
const gchar * | g_base_info_get_attribute () |
gboolean | g_base_info_iterate_attributes () |
GIBaseInfo * | g_base_info_get_container () |
gboolean | g_base_info_is_deprecated () |
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
GIBaseInfo * g_info_new (GIInfoType type
,GIBaseInfo *container
,GITypelib *typelib
,guint32 offset
);
TODO
GIBaseInfo *
g_base_info_ref (GIBaseInfo *info
);
Increases the reference count of 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.
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.
GIInfoType
g_base_info_get_type (GIBaseInfo *info
);
Obtain the info type of the GIBaseInfo.
GITypelib *
g_base_info_get_typelib (GIBaseInfo *info
);
Obtain the typelib this info
belongs to
const gchar *
g_base_info_get_namespace (GIBaseInfo *info
);
Obtain the namespace 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.
const gchar * g_base_info_get_attribute (GIBaseInfo *info
,const gchar *name
);
Retrieve an arbitrary attribute associated with this node.
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); } } |
info |
a GIBaseInfo |
|
iterator |
a GIAttributeIter structure, must be initialized; see below |
|
name |
Returned name, must not be freed. |
[out][transfer none] |
value |
Returned name, must not be freed. |
[out][transfer none] |
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.
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. |