summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2010-06-06 23:04:15 -0300
committerJohan Dahlin <johan@gnome.org>2010-06-06 23:04:15 -0300
commit82df98a74d83e39a7b120269e6cdb2c067c941ba (patch)
tree6756ff9dfeb45251e6f31b3ce8282130f2b45a08
parent93ba28680565896b238c059f0fc4053f9ea94e09 (diff)
downloadgobject-introspection-82df98a74d83e39a7b120269e6cdb2c067c941ba.tar.gz
[giregisteredtypeinfo] Document and check parameters
-rw-r--r--girepository/giregisteredtypeinfo.c61
1 files changed, 59 insertions, 2 deletions
diff --git a/girepository/giregisteredtypeinfo.c b/girepository/giregisteredtypeinfo.c
index 0f3493f3..3f308d22 100644
--- a/girepository/giregisteredtypeinfo.c
+++ b/girepository/giregisteredtypeinfo.c
@@ -28,11 +28,40 @@
#include "gitypelib-internal.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 *
g_registered_type_info_get_type_name (GIRegisteredTypeInfo *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)
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;
}
+/**
+ * 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 *
g_registered_type_info_get_type_init (GIRegisteredTypeInfo *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)
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;
}
+/**
+ * g_registered_type_info_get_g_type:
+ * @info: a #GIRegisteredTypeInfo
+ *
+ * Obtain the #GType for this registered type.
+ *
+ * Returns: the #GType.
+ */
GType
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);
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);
if (type_init == NULL)