GIBaseInfo

GIBaseInfo — Base struct for all GTypelib structs

Synopsis

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);
GTypelib *          g_base_info_get_typelib             (GIBaseInfo *info);
gboolean            g_base_info_equal                   (GIBaseInfo *info1,
                                                         GIBaseInfo *info2);

Description

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);


Details

GIBaseInfo

typedef struct _GIBaseInfoStub       GIBaseInfo;


g_base_info_ref ()

GIBaseInfo *        g_base_info_ref                     (GIBaseInfo *info);

Increases the reference count of info.

info :

a GIBaseInfo

Returns :

the same info.

g_base_info_unref ()

void                g_base_info_unref                   (GIBaseInfo *info);

Decreases the reference count of info. When its reference count drops to 0, the info is freed.

info :

a GIBaseInfo

g_base_info_get_type ()

GIInfoType          g_base_info_get_type                (GIBaseInfo *info);

Obtains the info type of the GIBaseInfo.

info :

a GIBaseInfo

Returns :

the info type of info

g_base_info_get_name ()

const gchar *       g_base_info_get_name                (GIBaseInfo *info);

Obtains 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.

info :

a GIBaseInfo

Returns :

the name of info or NULL if it lacks a name.

g_base_info_get_namespace ()

const gchar *       g_base_info_get_namespace           (GIBaseInfo *info);

Obtains the namespace of info.

info :

a GIBaseInfo

Returns :

the namespace

g_base_info_is_deprecated ()

gboolean            g_base_info_is_deprecated           (GIBaseInfo *info);

Obtains whether the info is represents a metadata which is deprecated or not.

info :

a GIBaseInfo

Returns :

TRUE if deprecated, otherwise FALSE

g_base_info_get_attribute ()

const gchar *       g_base_info_get_attribute           (GIBaseInfo *info,
                                                         const gchar *name);

Retrieve an arbitrary attribute associated with this node.

info :

a GIBaseInfo

name :

a freeform string naming an attribute

Returns :

The value of the attribute, or NULL if no such attribute exists

g_base_info_iterate_attributes ()

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]

Returns :

TRUE if there are more attributes, FALSE otherwise

g_base_info_get_container ()

GIBaseInfo *        g_base_info_get_container           (GIBaseInfo *info);

Obtains the container of the info. The container is the parent GIBaseInfo. For instance, the parent of a GIFunctionInfo is an GIObjectInfo or GIInterfaceInfo.

info :

a GIBaseInfo

Returns :

the container

g_base_info_get_typelib ()

GTypelib *          g_base_info_get_typelib             (GIBaseInfo *info);

Obtains the typelib this info belongs to

info :

a GIBaseInfo

Returns :

the typelib.

g_base_info_equal ()

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.

info1 :

a GIBaseInfo

info2 :

a GIBaseInfo

Returns :

TRUE if and only if info1 equals info2.