mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-28 13:12:10 +01:00
[giregisteredtypeinfo] Document and check parameters
This commit is contained in:
parent
a23a697664
commit
91c621b9db
@ -28,11 +28,40 @@
|
|||||||
#include "gitypelib-internal.h"
|
#include "gitypelib-internal.h"
|
||||||
#include "girffi.h"
|
#include "girffi.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:giregisteredtypeinfo
|
||||||
|
* @Short_description: Struct representing a struct with a GType
|
||||||
|
* @Title: GIRegisteredTypeInfo
|
||||||
|
*
|
||||||
|
* GIRegisteredTypeInfo represents an entity with a GType associated. Could
|
||||||
|
* be either a #GIEnumInfo, #GIInterfaceInfo, #GIObjectInfo, #GIStructInfo or a
|
||||||
|
* #GIUnionInfo.
|
||||||
|
*
|
||||||
|
* A registered type info struct has a name and a type function.
|
||||||
|
* To get the name call g_registered_type_info_get_type_name().
|
||||||
|
* Most users want to call g_registered_type_info_get_g_type() and don't worry
|
||||||
|
* about the rest of the details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_registered_type_info_get_type_name:
|
||||||
|
* @info: a #GIRegisteredTypeInfo
|
||||||
|
*
|
||||||
|
* Obtain the type name of the struct within the GObject type system.
|
||||||
|
* This type can be passed to g_type_name() to get a #GType.
|
||||||
|
*
|
||||||
|
* Returns: the type name
|
||||||
|
*/
|
||||||
const gchar *
|
const gchar *
|
||||||
g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
|
g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
|
||||||
{
|
{
|
||||||
GIRealInfo *rinfo = (GIRealInfo *)info;
|
GIRealInfo *rinfo = (GIRealInfo *)info;
|
||||||
RegisteredTypeBlob *blob = (RegisteredTypeBlob *)&rinfo->typelib->data[rinfo->offset];
|
RegisteredTypeBlob *blob;
|
||||||
|
|
||||||
|
g_return_val_if_fail (info != NULL, NULL);
|
||||||
|
g_return_val_if_fail (GI_IS_REGISTERED_TYPE_INFO (info), NULL);
|
||||||
|
|
||||||
|
blob = (RegisteredTypeBlob *)&rinfo->typelib->data[rinfo->offset];
|
||||||
|
|
||||||
if (blob->gtype_name)
|
if (blob->gtype_name)
|
||||||
return g_typelib_get_string (rinfo->typelib, blob->gtype_name);
|
return g_typelib_get_string (rinfo->typelib, blob->gtype_name);
|
||||||
@ -40,11 +69,28 @@ g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_registered_type_info_get_type_init:
|
||||||
|
* @info: a #GIRegisteredTypeInfo
|
||||||
|
*
|
||||||
|
* Obtain the type init function for @info. The type init function is the
|
||||||
|
* function which will register the GType within the GObject type system.
|
||||||
|
* Usually this is not called by langauge bindings or applications, use
|
||||||
|
* g_registered_type_info_get_g_type() directly instead.
|
||||||
|
*
|
||||||
|
* Returns: the symbol name of the type init function, suitable for
|
||||||
|
* passing into g_module_symbol().
|
||||||
|
*/
|
||||||
const gchar *
|
const gchar *
|
||||||
g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info)
|
g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info)
|
||||||
{
|
{
|
||||||
GIRealInfo *rinfo = (GIRealInfo *)info;
|
GIRealInfo *rinfo = (GIRealInfo *)info;
|
||||||
RegisteredTypeBlob *blob = (RegisteredTypeBlob *)&rinfo->typelib->data[rinfo->offset];
|
RegisteredTypeBlob *blob;
|
||||||
|
|
||||||
|
g_return_val_if_fail (info != NULL, NULL);
|
||||||
|
g_return_val_if_fail (GI_IS_REGISTERED_TYPE_INFO (info), NULL);
|
||||||
|
|
||||||
|
blob = (RegisteredTypeBlob *)&rinfo->typelib->data[rinfo->offset];
|
||||||
|
|
||||||
if (blob->gtype_init)
|
if (blob->gtype_init)
|
||||||
return g_typelib_get_string (rinfo->typelib, blob->gtype_init);
|
return g_typelib_get_string (rinfo->typelib, blob->gtype_init);
|
||||||
@ -52,6 +98,14 @@ g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_registered_type_info_get_g_type:
|
||||||
|
* @info: a #GIRegisteredTypeInfo
|
||||||
|
*
|
||||||
|
* Obtain the #GType for this registered type.
|
||||||
|
*
|
||||||
|
* Returns: the #GType.
|
||||||
|
*/
|
||||||
GType
|
GType
|
||||||
g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
|
g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
|
||||||
{
|
{
|
||||||
@ -59,6 +113,9 @@ g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
|
|||||||
GType (* get_type_func) (void);
|
GType (* get_type_func) (void);
|
||||||
GIRealInfo *rinfo = (GIRealInfo*)info;
|
GIRealInfo *rinfo = (GIRealInfo*)info;
|
||||||
|
|
||||||
|
g_return_val_if_fail (info != NULL, G_TYPE_INVALID);
|
||||||
|
g_return_val_if_fail (GI_IS_REGISTERED_TYPE_INFO (info), G_TYPE_INVALID);
|
||||||
|
|
||||||
type_init = g_registered_type_info_get_type_init (info);
|
type_init = g_registered_type_info_get_type_init (info);
|
||||||
|
|
||||||
if (type_init == NULL)
|
if (type_init == NULL)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user