GIBaseInfo

GIBaseInfo — Base struct for all GITypelib structs

Synopsis

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

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


Struct hierarchy

  GIBaseInfo
   +----GIArgInfo
   +----GICallableInfo
   +----GIConstantInfo
   +----GIFieldInfo
   +----GIPropertyInfo
   +----GIRegisteredTypeInfo
   +----GITypeInfo

Details

enum GIInfoType

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.

GI_INFO_TYPE_INVALID

invalid type

GI_INFO_TYPE_FUNCTION

function, see GIFunctionInfo

GI_INFO_TYPE_CALLBACK

callback, see GIFunctionInfo

GI_INFO_TYPE_STRUCT

struct, see GIStructInfo

GI_INFO_TYPE_BOXED

boxed, see GIStructInfo or GIUnionInfo

GI_INFO_TYPE_ENUM

enum, see GIEnumInfo

GI_INFO_TYPE_FLAGS

flags, see GIEnumInfo

GI_INFO_TYPE_OBJECT

object, see GIObjectInfo

GI_INFO_TYPE_INTERFACE

interface, see GIInterfaceInfo

GI_INFO_TYPE_CONSTANT

contant, see GIConstantInfo

GI_INFO_TYPE_INVALID_0

GI_INFO_TYPE_UNION

union, see GIUnionInfo

GI_INFO_TYPE_VALUE

enum value, see GIValueInfo

GI_INFO_TYPE_SIGNAL

signal, see GISignalInfo

GI_INFO_TYPE_VFUNC

virtual function, see GIVFuncInfo

GI_INFO_TYPE_PROPERTY

GObject property, see GIPropertyInfo

GI_INFO_TYPE_FIELD

struct or union field, see GIFieldInfo

GI_INFO_TYPE_ARG

argument of a function or callback, see GIArgInfo

GI_INFO_TYPE_TYPE

type information, see GITypeInfo

GI_INFO_TYPE_UNRESOLVED

unresolved type, a type which is not present in the typelib, or any of its dependencies.

g_info_type_to_string ()

const gchar *       g_info_type_to_string               (GIInfoType type);

Obtain a string representation of type

type :

the info type

Returns :

the string

GIAttributeIter

typedef struct {
} GIAttributeIter;

An opaque structure used to iterate over attributes in a GIBaseInfo struct.


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

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

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.

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

Obtain the namespace of info.

info :

a GIBaseInfo

Returns :

the namespace

g_base_info_is_deprecated ()

gboolean            g_base_info_is_deprecated           (GIBaseInfo *info);

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

info :

a GIBaseInfo

Returns :

TRUE if deprecated

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

g_base_info_get_container ()

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.

info :

a GIBaseInfo

Returns :

the container. [transfer none]

g_base_info_get_typelib ()

GITypelib *         g_base_info_get_typelib             (GIBaseInfo *info);

Obtain the typelib this info belongs to

info :

a GIBaseInfo

Returns :

the typelib. [transfer none]

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.