[girepository] Add macros for checking struct type

Add macros for checking the sub-struct type. These are
similar to the standard GObject macros.
This commit is contained in:
Johan Dahlin 2010-05-27 23:18:58 -03:00
parent 23e9949e1d
commit e66f46042d

View File

@ -388,15 +388,19 @@ GIBaseInfo * g_base_info_get_container (GIBaseInfo *info);
GTypelib * g_base_info_get_typelib (GIBaseInfo *info); GTypelib * g_base_info_get_typelib (GIBaseInfo *info);
gboolean g_base_info_equal (GIBaseInfo *info1, gboolean g_base_info_equal (GIBaseInfo *info1,
GIBaseInfo *info2); GIBaseInfo *info2);
gboolean g_base_info_is_a (GIBaseInfo *info,
GIInfoType type);
GIBaseInfo * g_info_new (GIInfoType type, GIBaseInfo * g_info_new (GIInfoType type,
GIBaseInfo *container, GIBaseInfo *container,
GTypelib *typelib, GTypelib *typelib,
guint32 offset); guint32 offset);
/* GIFunctionInfo */ /* GIFunctionInfo */
#define GI_IS_FUNCTION_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION)
/** /**
* GIFunctionInfoFlags: * GIFunctionInfoFlags:
* @GI_FUNCTION_IS_METHOD: is a method. * @GI_FUNCTION_IS_METHOD: is a method.
@ -481,6 +485,12 @@ gboolean g_function_info_invoke (GIFunctionInfo *info,
/* GICallableInfo */ /* GICallableInfo */
#define GI_IS_CALLABLE_INFO(info) \
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CALLBACK) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_SIGNAL) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VFUNC))
/** /**
* GITransfer: * GITransfer:
* @GI_TRANSFER_NOTHING: transfer nothing to the caller * @GI_TRANSFER_NOTHING: transfer nothing to the caller
@ -511,6 +521,9 @@ void g_callable_info_load_arg (GICallableInfo *info,
/* GIArgInfo */ /* GIArgInfo */
#define GI_IS_ARG_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ARG)
/** /**
* GIDirection: * GIDirection:
* @GI_DIRECTION_IN: in argument. * @GI_DIRECTION_IN: in argument.
@ -560,6 +573,10 @@ GITypeInfo * g_arg_info_get_type (GIArgInfo *info);
void g_arg_info_load_type (GIArgInfo *info, void g_arg_info_load_type (GIArgInfo *info,
GITypeInfo *type); GITypeInfo *type);
/* GITypeInfo */
#define GI_IS_TYPE_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_TYPE)
/** /**
* GITypeTag: * GITypeTag:
@ -670,17 +687,26 @@ GIErrorDomainInfo *g_type_info_get_error_domain (GITypeInfo *info,
/* GIErrorDomainInfo */ /* GIErrorDomainInfo */
#define GI_IS_ERROR_DOMAIN_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ERROR_DOMAIN)
const gchar * g_error_domain_info_get_quark (GIErrorDomainInfo *info); const gchar * g_error_domain_info_get_quark (GIErrorDomainInfo *info);
GIInterfaceInfo * g_error_domain_info_get_codes (GIErrorDomainInfo *info); GIInterfaceInfo * g_error_domain_info_get_codes (GIErrorDomainInfo *info);
/* GIValueInfo */ /* GIValueInfo */
#define GI_IS_VALUE_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VALUE)
glong g_value_info_get_value (GIValueInfo *info); glong g_value_info_get_value (GIValueInfo *info);
/* GIFieldInfo */ /* GIFieldInfo */
#define GI_IS_FIELD_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FIELD)
/** /**
* GIFieldInfoFlags: * GIFieldInfoFlags:
* @GI_FIELD_IS_READABLE: field is readable. * @GI_FIELD_IS_READABLE: field is readable.
@ -708,6 +734,10 @@ gboolean g_field_info_set_field (GIFieldInfo *field_info,
const GArgument *value); const GArgument *value);
/* GIUnionInfo */ /* GIUnionInfo */
#define GI_IS_UNION_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_UNION)
gint g_union_info_get_n_fields (GIUnionInfo *info); gint g_union_info_get_n_fields (GIUnionInfo *info);
GIFieldInfo * g_union_info_get_field (GIUnionInfo *info, GIFieldInfo * g_union_info_get_field (GIUnionInfo *info,
gint n); gint n);
@ -726,6 +756,10 @@ gsize g_union_info_get_alignment (GIUnionInfo *info);
/* GIStructInfo */ /* GIStructInfo */
#define GI_IS_STRUCT_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_STRUCT)
gint g_struct_info_get_n_fields (GIStructInfo *info); gint g_struct_info_get_n_fields (GIStructInfo *info);
GIFieldInfo * g_struct_info_get_field (GIStructInfo *info, GIFieldInfo * g_struct_info_get_field (GIStructInfo *info,
gint n); gint n);
@ -741,12 +775,22 @@ gboolean g_struct_info_is_foreign (GIStructInfo *info);
/* GIRegisteredTypeInfo */ /* GIRegisteredTypeInfo */
#define GI_IS_REGISTERED_TYPE_INFO(info) \
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_INTERFACE) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_OBJECT) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_STRUCT) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_UNION))
const gchar * g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info); const gchar * g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info);
const gchar * g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info); const gchar * g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info);
GType g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info); GType g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info);
/* GIEnumInfo */ /* GIEnumInfo */
#define GI_IS_ENUM_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM)
gint g_enum_info_get_n_values (GIEnumInfo *info); gint g_enum_info_get_n_values (GIEnumInfo *info);
GIValueInfo * g_enum_info_get_value (GIEnumInfo *info, GIValueInfo * g_enum_info_get_value (GIEnumInfo *info,
gint n); gint n);
@ -754,6 +798,9 @@ GITypeTag g_enum_info_get_storage_type (GIEnumInfo *in
/* GIObjectInfo */ /* GIObjectInfo */
#define GI_IS_OBJECT_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_OBJECT)
const gchar * g_object_info_get_type_name (GIObjectInfo *info); const gchar * g_object_info_get_type_name (GIObjectInfo *info);
const gchar * g_object_info_get_type_init (GIObjectInfo *info); const gchar * g_object_info_get_type_init (GIObjectInfo *info);
gboolean g_object_info_get_abstract (GIObjectInfo *info); gboolean g_object_info_get_abstract (GIObjectInfo *info);
@ -788,6 +835,9 @@ GIStructInfo * g_object_info_get_class_struct (GIObjectInfo *in
/* GIInterfaceInfo */ /* GIInterfaceInfo */
#define GI_IS_INTERFACE_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_INTERFACE)
gint g_interface_info_get_n_prerequisites (GIInterfaceInfo *info); gint g_interface_info_get_n_prerequisites (GIInterfaceInfo *info);
GIBaseInfo * g_interface_info_get_prerequisite (GIInterfaceInfo *info, GIBaseInfo * g_interface_info_get_prerequisite (GIInterfaceInfo *info,
gint n); gint n);
@ -816,12 +866,18 @@ GIStructInfo * g_interface_info_get_iface_struct (GIInterfaceInfo *in
/* GIPropertyInfo */ /* GIPropertyInfo */
#define GI_IS_PROPERTY_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_PROPERTY)
GParamFlags g_property_info_get_flags (GIPropertyInfo *info); GParamFlags g_property_info_get_flags (GIPropertyInfo *info);
GITypeInfo * g_property_info_get_type (GIPropertyInfo *info); GITypeInfo * g_property_info_get_type (GIPropertyInfo *info);
/* GISignalInfo */ /* GISignalInfo */
#define GI_IS_SIGNAL_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_SIGNAL)
GSignalFlags g_signal_info_get_flags (GISignalInfo *info); GSignalFlags g_signal_info_get_flags (GISignalInfo *info);
GIVFuncInfo * g_signal_info_get_class_closure (GISignalInfo *info); GIVFuncInfo * g_signal_info_get_class_closure (GISignalInfo *info);
gboolean g_signal_info_true_stops_emit (GISignalInfo *info); gboolean g_signal_info_true_stops_emit (GISignalInfo *info);
@ -829,6 +885,9 @@ gboolean g_signal_info_true_stops_emit (GISignalInfo
/* GIVFuncInfo */ /* GIVFuncInfo */
#define GI_IS_VFUNC_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VFUNC)
/** /**
* GIVFuncInfoFlags: * GIVFuncInfoFlags:
* @GI_VFUNC_MUST_CHAIN_UP: chains up to the parent type * @GI_VFUNC_MUST_CHAIN_UP: chains up to the parent type
@ -852,6 +911,9 @@ GIFunctionInfo * g_vfunc_info_get_invoker (GIVFuncInfo
/* GIConstantInfo */ /* GIConstantInfo */
#define GI_IS_CONSTANT_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CONSTANT)
GITypeInfo * g_constant_info_get_type (GIConstantInfo *info); GITypeInfo * g_constant_info_get_type (GIConstantInfo *info);
gint g_constant_info_get_value (GIConstantInfo *info, gint g_constant_info_get_value (GIConstantInfo *info,
GArgument *value); GArgument *value);