mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
Some fixes
This commit is contained in:
parent
bf4631bf28
commit
b0fa1e8965
@ -31,9 +31,21 @@ gboolean raw = FALSE;
|
|||||||
gchar **input = NULL;
|
gchar **input = NULL;
|
||||||
gchar *output = NULL;
|
gchar *output = NULL;
|
||||||
|
|
||||||
|
static void
|
||||||
|
write_type_name (const gchar *namespace,
|
||||||
|
GIBaseInfo *info,
|
||||||
|
FILE *file)
|
||||||
|
{
|
||||||
|
if (strcmp (namespace, g_base_info_get_namespace (info)) != 0)
|
||||||
|
g_fprintf (file, "%s.", g_base_info_get_namespace (info));
|
||||||
|
|
||||||
|
g_fprintf (file, "%s", g_base_info_get_name (info));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_type_info (GITypeInfo *info,
|
write_type_info (const gchar *namespace,
|
||||||
FILE *file)
|
GITypeInfo *info,
|
||||||
|
FILE *file)
|
||||||
{
|
{
|
||||||
gint tag;
|
gint tag;
|
||||||
gint i;
|
gint i;
|
||||||
@ -63,77 +75,80 @@ write_type_info (GITypeInfo *info,
|
|||||||
tag = g_type_info_get_tag (info);
|
tag = g_type_info_get_tag (info);
|
||||||
|
|
||||||
if (tag < 20)
|
if (tag < 20)
|
||||||
g_print ("%s%s", basic[tag], g_type_info_is_pointer (info) ? "*" : "");
|
g_fprintf (file, "%s%s", basic[tag], g_type_info_is_pointer (info) ? "*" : "");
|
||||||
else if (tag == 20)
|
else if (tag == 20)
|
||||||
{
|
{
|
||||||
gint length;
|
gint length;
|
||||||
|
|
||||||
type = g_type_info_get_param_type (info, 0);
|
type = g_type_info_get_param_type (info, 0);
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_print ("[");
|
g_fprintf (file, "[");
|
||||||
|
|
||||||
length = g_type_info_get_array_length (info);
|
length = g_type_info_get_array_length (info);
|
||||||
|
|
||||||
if (length >= 0)
|
if (length >= 0)
|
||||||
g_print ("length=%d", length);
|
g_fprintf (file, "length=%d", length);
|
||||||
|
|
||||||
if (g_type_info_is_zero_terminated (info))
|
if (g_type_info_is_zero_terminated (info))
|
||||||
g_print ("%szero-terminated=1", length >= 0 ? "," : "");
|
g_fprintf (file, "%szero-terminated=1", length >= 0 ? "," : "");
|
||||||
|
|
||||||
g_print ("]");
|
g_fprintf (file, "]");
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
}
|
}
|
||||||
else if (tag == 21)
|
else if (tag == 21)
|
||||||
{
|
{
|
||||||
GIBaseInfo *iface = g_type_info_get_interface (info);
|
GIBaseInfo *iface = g_type_info_get_interface (info);
|
||||||
g_print ("%s%s",
|
write_type_name (namespace, iface, file);
|
||||||
g_base_info_get_name (iface),
|
if (g_type_info_is_pointer (info))
|
||||||
g_type_info_is_pointer (info) ? "*" : "");
|
g_fprintf (file, "*");
|
||||||
g_base_info_unref (iface);
|
g_base_info_unref (iface);
|
||||||
}
|
}
|
||||||
else if (tag == 22)
|
else if (tag == 22)
|
||||||
{
|
{
|
||||||
type = g_type_info_get_param_type (info, 0);
|
type = g_type_info_get_param_type (info, 0);
|
||||||
g_print ("GList<");
|
g_fprintf (file, "GList<");
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_print (">");
|
g_fprintf (file, ">");
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
}
|
}
|
||||||
else if (tag == 23)
|
else if (tag == 23)
|
||||||
{
|
{
|
||||||
type = g_type_info_get_param_type (info, 0);
|
type = g_type_info_get_param_type (info, 0);
|
||||||
g_print ("GSList<");
|
g_fprintf (file, "GSList<");
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_print (">");
|
g_fprintf (file, ">");
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
}
|
}
|
||||||
else if (tag == 24)
|
else if (tag == 24)
|
||||||
{
|
{
|
||||||
type = g_type_info_get_param_type (info, 0);
|
type = g_type_info_get_param_type (info, 0);
|
||||||
g_print ("GHashTable<");
|
g_fprintf (file, "GHashTable<");
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
type = g_type_info_get_param_type (info, 1);
|
type = g_type_info_get_param_type (info, 1);
|
||||||
g_print(",");
|
g_fprintf (file, ",");
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_print (">");
|
g_fprintf (file, ">");
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
}
|
}
|
||||||
else if (tag == 25)
|
else if (tag == 25)
|
||||||
{
|
{
|
||||||
g_print ("GError<");
|
g_fprintf (file, "GError<");
|
||||||
for (i = 0; i < g_type_info_get_n_error_domains (info); i++)
|
for (i = 0; i < g_type_info_get_n_error_domains (info); i++)
|
||||||
{
|
{
|
||||||
GIErrorDomainInfo *ed = g_type_info_get_error_domain (info, i);
|
GIErrorDomainInfo *ed = g_type_info_get_error_domain (info, i);
|
||||||
g_print ("%s%s", i ? "," : "", g_base_info_get_name ((GIBaseInfo *)ed));
|
if (i > 0)
|
||||||
|
g_fprintf (file, ",");
|
||||||
|
write_type_name (namespace, (GIBaseInfo *)ed, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)ed);
|
g_base_info_unref ((GIBaseInfo *)ed);
|
||||||
}
|
}
|
||||||
g_print (">");
|
g_fprintf (file, ">");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_field_info (GIFieldInfo *info,
|
write_field_info (const gchar *namespace,
|
||||||
|
GIFieldInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
@ -147,25 +162,27 @@ write_field_info (GIFieldInfo *info,
|
|||||||
size = g_field_info_get_size (info);
|
size = g_field_info_get_size (info);
|
||||||
offset = g_field_info_get_offset (info);
|
offset = g_field_info_get_offset (info);
|
||||||
|
|
||||||
g_print (" <field name=\"%s\" readable=\"%s\" writable=\"%s\" ",
|
g_fprintf (file,
|
||||||
name,
|
" <field name=\"%s\" readable=\"%s\" writable=\"%s\" ",
|
||||||
flags & GI_FIELD_IS_READABLE ? "1" : "0",
|
name,
|
||||||
flags & GI_FIELD_IS_WRITABLE ? "1" : "0");
|
flags & GI_FIELD_IS_READABLE ? "1" : "0",
|
||||||
|
flags & GI_FIELD_IS_WRITABLE ? "1" : "0");
|
||||||
if (size)
|
if (size)
|
||||||
g_print ("bits=\"%d\" ", size);
|
g_fprintf (file, "bits=\"%d\" ", size);
|
||||||
g_print ("offset=\"%d\" ", offset);
|
g_fprintf (file, "offset=\"%d\" ", offset);
|
||||||
|
|
||||||
g_print ("type=\"");
|
g_fprintf (file, "type=\"");
|
||||||
|
|
||||||
type = g_field_info_get_type (info);
|
type = g_field_info_get_type (info);
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
|
|
||||||
g_print ("\" />\n");
|
g_fprintf (file, "\" />\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_callable_info (GICallableInfo *info,
|
write_callable_info (const gchar *namespace,
|
||||||
|
GICallableInfo *info,
|
||||||
FILE *file,
|
FILE *file,
|
||||||
gint indent)
|
gint indent)
|
||||||
{
|
{
|
||||||
@ -175,10 +192,30 @@ write_callable_info (GICallableInfo *info,
|
|||||||
g_fprintf (file, "%*s <return-type type=\"", indent, "");
|
g_fprintf (file, "%*s <return-type type=\"", indent, "");
|
||||||
|
|
||||||
type = g_callable_info_get_return_type (info);
|
type = g_callable_info_get_return_type (info);
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
|
|
||||||
g_fprintf (file, "\"/>\n");
|
g_fprintf (file, "\"");
|
||||||
|
|
||||||
|
if (g_type_info_is_pointer (type))
|
||||||
|
{
|
||||||
|
switch (g_callable_info_get_caller_owns (info))
|
||||||
|
{
|
||||||
|
case GI_TRANSFER_NOTHING:
|
||||||
|
g_fprintf (file, " transfer=\"none\"");
|
||||||
|
break;
|
||||||
|
case GI_TRANSFER_CONTAINER:
|
||||||
|
g_fprintf (file, " transfer=\"shallow\"");
|
||||||
|
break;
|
||||||
|
case GI_TRANSFER_EVERYTHING:
|
||||||
|
g_fprintf (file, " transfer=\"full\"");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
g_assert_not_reached ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_fprintf (file, "/>\n");
|
||||||
|
|
||||||
if (g_callable_info_get_n_args (info) > 0)
|
if (g_callable_info_get_n_args (info) > 0)
|
||||||
{
|
{
|
||||||
@ -191,7 +228,7 @@ write_callable_info (GICallableInfo *info,
|
|||||||
indent, "", g_base_info_get_name ((GIBaseInfo *) arg));
|
indent, "", g_base_info_get_name ((GIBaseInfo *) arg));
|
||||||
|
|
||||||
type = g_arg_info_get_type (arg);
|
type = g_arg_info_get_type (arg);
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)type);
|
g_base_info_unref ((GIBaseInfo *)type);
|
||||||
g_fprintf (file, "\"");
|
g_fprintf (file, "\"");
|
||||||
|
|
||||||
@ -232,7 +269,8 @@ write_callable_info (GICallableInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_function_info (GIFunctionInfo *info,
|
write_function_info (const gchar *namespace,
|
||||||
|
GIFunctionInfo *info,
|
||||||
FILE *file,
|
FILE *file,
|
||||||
gint indent)
|
gint indent)
|
||||||
{
|
{
|
||||||
@ -266,12 +304,13 @@ write_function_info (GIFunctionInfo *info,
|
|||||||
g_fprintf (file, " deprecated=\"1\"");
|
g_fprintf (file, " deprecated=\"1\"");
|
||||||
|
|
||||||
g_fprintf (file, ">\n");
|
g_fprintf (file, ">\n");
|
||||||
write_callable_info ((GICallableInfo*)info, file, indent);
|
write_callable_info (namespace, (GICallableInfo*)info, file, indent);
|
||||||
g_fprintf (file, "%*s</%s>\n", indent, "", tag);
|
g_fprintf (file, "%*s</%s>\n", indent, "", tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_callback_info (GICallbackInfo *info,
|
write_callback_info (const gchar *namespace,
|
||||||
|
GICallbackInfo *info,
|
||||||
FILE *file,
|
FILE *file,
|
||||||
gint indent)
|
gint indent)
|
||||||
{
|
{
|
||||||
@ -288,12 +327,13 @@ write_callback_info (GICallbackInfo *info,
|
|||||||
g_fprintf (file, " deprecated=\"1\"");
|
g_fprintf (file, " deprecated=\"1\"");
|
||||||
|
|
||||||
g_fprintf (file, ">\n");
|
g_fprintf (file, ">\n");
|
||||||
write_callable_info ((GICallableInfo*)info, file, indent);
|
write_callable_info (namespace, (GICallableInfo*)info, file, indent);
|
||||||
g_fprintf (file, "%*s</callback>\n", indent, "");
|
g_fprintf (file, "%*s</callback>\n", indent, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_struct_info (GIStructInfo *info,
|
write_struct_info (const gchar *namespace,
|
||||||
|
GIStructInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
@ -323,14 +363,14 @@ write_struct_info (GIStructInfo *info,
|
|||||||
for (i = 0; i < g_struct_info_get_n_fields (info); i++)
|
for (i = 0; i < g_struct_info_get_n_fields (info); i++)
|
||||||
{
|
{
|
||||||
GIFieldInfo *field = g_struct_info_get_field (info, i);
|
GIFieldInfo *field = g_struct_info_get_field (info, i);
|
||||||
write_field_info (field, file);
|
write_field_info (namespace, field, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)field);
|
g_base_info_unref ((GIBaseInfo *)field);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_struct_info_get_n_methods (info); i++)
|
for (i = 0; i < g_struct_info_get_n_methods (info); i++)
|
||||||
{
|
{
|
||||||
GIFunctionInfo *function = g_struct_info_get_method (info, i);
|
GIFunctionInfo *function = g_struct_info_get_method (info, i);
|
||||||
write_function_info (function, file, 6);
|
write_function_info (namespace, function, file, 6);
|
||||||
g_base_info_unref ((GIBaseInfo *)function);
|
g_base_info_unref ((GIBaseInfo *)function);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,7 +381,8 @@ write_struct_info (GIStructInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_value_info (GIValueInfo *info,
|
write_value_info (const gchar *namespace,
|
||||||
|
GIValueInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
@ -353,16 +394,17 @@ write_value_info (GIValueInfo *info,
|
|||||||
value = g_value_info_get_value (info);
|
value = g_value_info_get_value (info);
|
||||||
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
|
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
|
||||||
|
|
||||||
g_print (" <member name=\"%s\" value=\"%d\"", name, value);
|
g_fprintf (file, " <member name=\"%s\" value=\"%d\"", name, value);
|
||||||
|
|
||||||
if (deprecated)
|
if (deprecated)
|
||||||
g_fprintf (file, " deprecated=\"1\"");
|
g_fprintf (file, " deprecated=\"1\"");
|
||||||
|
|
||||||
g_print (" />\n");
|
g_fprintf (file, " />\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_constant_info (GIConstantInfo *info,
|
write_constant_info (const gchar *namespace,
|
||||||
|
GIConstantInfo *info,
|
||||||
FILE *file,
|
FILE *file,
|
||||||
gint indent)
|
gint indent)
|
||||||
{
|
{
|
||||||
@ -374,10 +416,10 @@ write_constant_info (GIConstantInfo *info,
|
|||||||
name = g_base_info_get_name ((GIBaseInfo *)info);
|
name = g_base_info_get_name ((GIBaseInfo *)info);
|
||||||
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
|
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
|
||||||
|
|
||||||
g_print ("%*s<constant name=\"%s\" type=\"", indent, "", name);
|
g_fprintf (file, "%*s<constant name=\"%s\" type=\"", indent, "", name);
|
||||||
|
|
||||||
type = g_constant_info_get_type (info);
|
type = g_constant_info_get_type (info);
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_fprintf (file, "\" value=\"");
|
g_fprintf (file, "\" value=\"");
|
||||||
|
|
||||||
g_constant_info_get_value (info, &value);
|
g_constant_info_get_value (info, &value);
|
||||||
@ -439,8 +481,9 @@ write_constant_info (GIConstantInfo *info,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_enum_info (GIEnumInfo *info,
|
write_enum_info (const gchar *namespace,
|
||||||
FILE *file)
|
GIEnumInfo *info,
|
||||||
|
FILE *file)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
const gchar *type_name;
|
const gchar *type_name;
|
||||||
@ -471,7 +514,7 @@ write_enum_info (GIEnumInfo *info,
|
|||||||
for (i = 0; i < g_enum_info_get_n_values (info); i++)
|
for (i = 0; i < g_enum_info_get_n_values (info); i++)
|
||||||
{
|
{
|
||||||
GIValueInfo *value = g_enum_info_get_value (info, i);
|
GIValueInfo *value = g_enum_info_get_value (info, i);
|
||||||
write_value_info (value, file);
|
write_value_info (namespace, value, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)value);
|
g_base_info_unref ((GIBaseInfo *)value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +525,8 @@ write_enum_info (GIEnumInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_signal_info (GISignalInfo *info,
|
write_signal_info (const gchar *namespace,
|
||||||
|
GISignalInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
GSignalFlags flags;
|
GSignalFlags flags;
|
||||||
@ -519,12 +563,13 @@ write_signal_info (GISignalInfo *info,
|
|||||||
|
|
||||||
g_fprintf (file, ">\n");
|
g_fprintf (file, ">\n");
|
||||||
|
|
||||||
write_callable_info ((GICallableInfo*)info, file, 6);
|
write_callable_info (namespace, (GICallableInfo*)info, file, 6);
|
||||||
g_fprintf (file, " </signal>\n");
|
g_fprintf (file, " </signal>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_vfunc_info (GIVFuncInfo *info,
|
write_vfunc_info (const gchar *namespace,
|
||||||
|
GIVFuncInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
GIVFuncInfoFlags flags;
|
GIVFuncInfoFlags flags;
|
||||||
@ -550,12 +595,13 @@ write_vfunc_info (GIVFuncInfo *info,
|
|||||||
|
|
||||||
g_fprintf (file, ">\n");
|
g_fprintf (file, ">\n");
|
||||||
|
|
||||||
write_callable_info ((GICallableInfo*)info, file, 6);
|
write_callable_info (namespace, (GICallableInfo*)info, file, 6);
|
||||||
g_fprintf (file, " </vfunc>\n");
|
g_fprintf (file, " </vfunc>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_property_info (GIPropertyInfo *info,
|
write_property_info (const gchar *namespace,
|
||||||
|
GIPropertyInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
GParamFlags flags;
|
GParamFlags flags;
|
||||||
@ -590,18 +636,18 @@ write_property_info (GIPropertyInfo *info,
|
|||||||
|
|
||||||
type = g_property_info_get_type (info);
|
type = g_property_info_get_type (info);
|
||||||
g_fprintf (file, " type=\"");
|
g_fprintf (file, " type=\"");
|
||||||
write_type_info (type, file);
|
write_type_info (namespace, type, file);
|
||||||
g_fprintf (file, "\"");
|
g_fprintf (file, "\"");
|
||||||
|
|
||||||
g_fprintf (file, "/>\n");
|
g_fprintf (file, "/>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_object_info (GIObjectInfo *info,
|
write_object_info (const gchar *namespace,
|
||||||
|
GIObjectInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
const gchar *parent;
|
|
||||||
const gchar *type_name;
|
const gchar *type_name;
|
||||||
const gchar *type_init;
|
const gchar *type_init;
|
||||||
gboolean deprecated;
|
gboolean deprecated;
|
||||||
@ -611,19 +657,18 @@ write_object_info (GIObjectInfo *info,
|
|||||||
name = g_base_info_get_name ((GIBaseInfo *)info);
|
name = g_base_info_get_name ((GIBaseInfo *)info);
|
||||||
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
|
deprecated = g_base_info_is_deprecated ((GIBaseInfo *)info);
|
||||||
|
|
||||||
pnode = g_object_info_get_parent (info);
|
|
||||||
if (pnode)
|
|
||||||
parent = g_base_info_get_name ((GIBaseInfo *)pnode);
|
|
||||||
else
|
|
||||||
parent = NULL;
|
|
||||||
g_base_info_unref ((GIBaseInfo *)pnode);
|
|
||||||
|
|
||||||
type_name = g_registered_type_info_get_type_name ((GIRegisteredTypeInfo*)info);
|
type_name = g_registered_type_info_get_type_name ((GIRegisteredTypeInfo*)info);
|
||||||
type_init = g_registered_type_info_get_type_init ((GIRegisteredTypeInfo*)info);
|
type_init = g_registered_type_info_get_type_init ((GIRegisteredTypeInfo*)info);
|
||||||
g_fprintf (file, " <object name=\"%s\"", name);
|
g_fprintf (file, " <object name=\"%s\"", name);
|
||||||
|
|
||||||
if (parent)
|
pnode = g_object_info_get_parent (info);
|
||||||
g_fprintf (file, " parent=\"%s\"", parent);
|
if (pnode)
|
||||||
|
{
|
||||||
|
g_fprintf (file, " parent=\"");
|
||||||
|
write_type_name (namespace, (GIBaseInfo *)pnode, file);
|
||||||
|
g_fprintf (file, "\"" );
|
||||||
|
}
|
||||||
|
g_base_info_unref ((GIBaseInfo *)pnode);
|
||||||
|
|
||||||
g_fprintf (file, " type-name=\"%s\" get-type=\"%s\"", type_name, type_init);
|
g_fprintf (file, " type-name=\"%s\" get-type=\"%s\"", type_name, type_init);
|
||||||
|
|
||||||
@ -638,8 +683,9 @@ write_object_info (GIObjectInfo *info,
|
|||||||
for (i = 0; i < g_object_info_get_n_interfaces (info); i++)
|
for (i = 0; i < g_object_info_get_n_interfaces (info); i++)
|
||||||
{
|
{
|
||||||
GIInterfaceInfo *imp = g_object_info_get_interface (info, i);
|
GIInterfaceInfo *imp = g_object_info_get_interface (info, i);
|
||||||
g_fprintf (file, " <interface name=\"%s\" />\n",
|
g_fprintf (file, " <interface name=\"");
|
||||||
g_base_info_get_name ((GIBaseInfo*)imp));
|
write_type_name (namespace, (GIBaseInfo*)imp, file);
|
||||||
|
g_fprintf (file,"\" />\n");
|
||||||
g_base_info_unref ((GIBaseInfo*)imp);
|
g_base_info_unref ((GIBaseInfo*)imp);
|
||||||
}
|
}
|
||||||
g_fprintf (file, " </implements>\n");
|
g_fprintf (file, " </implements>\n");
|
||||||
@ -648,42 +694,42 @@ write_object_info (GIObjectInfo *info,
|
|||||||
for (i = 0; i < g_object_info_get_n_fields (info); i++)
|
for (i = 0; i < g_object_info_get_n_fields (info); i++)
|
||||||
{
|
{
|
||||||
GIFieldInfo *field = g_object_info_get_field (info, i);
|
GIFieldInfo *field = g_object_info_get_field (info, i);
|
||||||
write_field_info (field, file);
|
write_field_info (namespace, field, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)field);
|
g_base_info_unref ((GIBaseInfo *)field);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_object_info_get_n_methods (info); i++)
|
for (i = 0; i < g_object_info_get_n_methods (info); i++)
|
||||||
{
|
{
|
||||||
GIFunctionInfo *function = g_object_info_get_method (info, i);
|
GIFunctionInfo *function = g_object_info_get_method (info, i);
|
||||||
write_function_info (function, file, 6);
|
write_function_info (namespace, function, file, 6);
|
||||||
g_base_info_unref ((GIBaseInfo *)function);
|
g_base_info_unref ((GIBaseInfo *)function);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_object_info_get_n_properties (info); i++)
|
for (i = 0; i < g_object_info_get_n_properties (info); i++)
|
||||||
{
|
{
|
||||||
GIPropertyInfo *prop = g_object_info_get_property (info, i);
|
GIPropertyInfo *prop = g_object_info_get_property (info, i);
|
||||||
write_property_info (prop, file);
|
write_property_info (namespace, prop, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)prop);
|
g_base_info_unref ((GIBaseInfo *)prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_object_info_get_n_signals (info); i++)
|
for (i = 0; i < g_object_info_get_n_signals (info); i++)
|
||||||
{
|
{
|
||||||
GISignalInfo *signal = g_object_info_get_signal (info, i);
|
GISignalInfo *signal = g_object_info_get_signal (info, i);
|
||||||
write_signal_info (signal, file);
|
write_signal_info (namespace, signal, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)signal);
|
g_base_info_unref ((GIBaseInfo *)signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_object_info_get_n_vfuncs (info); i++)
|
for (i = 0; i < g_object_info_get_n_vfuncs (info); i++)
|
||||||
{
|
{
|
||||||
GIVFuncInfo *vfunc = g_object_info_get_vfunc (info, i);
|
GIVFuncInfo *vfunc = g_object_info_get_vfunc (info, i);
|
||||||
write_vfunc_info (vfunc, file);
|
write_vfunc_info (namespace, vfunc, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)vfunc);
|
g_base_info_unref ((GIBaseInfo *)vfunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_object_info_get_n_constants (info); i++)
|
for (i = 0; i < g_object_info_get_n_constants (info); i++)
|
||||||
{
|
{
|
||||||
GIConstantInfo *constant = g_object_info_get_constant (info, i);
|
GIConstantInfo *constant = g_object_info_get_constant (info, i);
|
||||||
write_constant_info (constant, file, 6);
|
write_constant_info (namespace, constant, file, 6);
|
||||||
g_base_info_unref ((GIBaseInfo *)constant);
|
g_base_info_unref ((GIBaseInfo *)constant);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,7 +737,8 @@ write_object_info (GIObjectInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_interface_info (GIInterfaceInfo *info,
|
write_interface_info (const gchar *namespace,
|
||||||
|
GIInterfaceInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
@ -721,12 +768,11 @@ write_interface_info (GIInterfaceInfo *info,
|
|||||||
GIBaseInfo *req = g_interface_info_get_prerequisite (info, i);
|
GIBaseInfo *req = g_interface_info_get_prerequisite (info, i);
|
||||||
|
|
||||||
if (g_base_info_get_type (req) == GI_INFO_TYPE_INTERFACE)
|
if (g_base_info_get_type (req) == GI_INFO_TYPE_INTERFACE)
|
||||||
g_fprintf (file, " <interface name=\"%s\" />\n",
|
g_fprintf (file, " <interface name=\"");
|
||||||
g_base_info_get_name (req));
|
|
||||||
else
|
else
|
||||||
g_fprintf (file, " <object name=\"%s\" />\n",
|
g_fprintf (file, " <object name=\"");
|
||||||
g_base_info_get_name (req));
|
write_type_name (namespace, req, file);
|
||||||
|
g_fprintf (file, "\" />\n");
|
||||||
g_base_info_unref (req);
|
g_base_info_unref (req);
|
||||||
}
|
}
|
||||||
g_fprintf (file, " </requires>\n");
|
g_fprintf (file, " </requires>\n");
|
||||||
@ -735,35 +781,35 @@ write_interface_info (GIInterfaceInfo *info,
|
|||||||
for (i = 0; i < g_interface_info_get_n_methods (info); i++)
|
for (i = 0; i < g_interface_info_get_n_methods (info); i++)
|
||||||
{
|
{
|
||||||
GIFunctionInfo *function = g_interface_info_get_method (info, i);
|
GIFunctionInfo *function = g_interface_info_get_method (info, i);
|
||||||
write_function_info (function, file, 6);
|
write_function_info (namespace, function, file, 6);
|
||||||
g_base_info_unref ((GIBaseInfo *)function);
|
g_base_info_unref ((GIBaseInfo *)function);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_interface_info_get_n_properties (info); i++)
|
for (i = 0; i < g_interface_info_get_n_properties (info); i++)
|
||||||
{
|
{
|
||||||
GIPropertyInfo *prop = g_interface_info_get_property (info, i);
|
GIPropertyInfo *prop = g_interface_info_get_property (info, i);
|
||||||
write_property_info (prop, file);
|
write_property_info (namespace, prop, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)prop);
|
g_base_info_unref ((GIBaseInfo *)prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_interface_info_get_n_signals (info); i++)
|
for (i = 0; i < g_interface_info_get_n_signals (info); i++)
|
||||||
{
|
{
|
||||||
GISignalInfo *signal = g_interface_info_get_signal (info, i);
|
GISignalInfo *signal = g_interface_info_get_signal (info, i);
|
||||||
write_signal_info (signal, file);
|
write_signal_info (namespace, signal, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)signal);
|
g_base_info_unref ((GIBaseInfo *)signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_interface_info_get_n_vfuncs (info); i++)
|
for (i = 0; i < g_interface_info_get_n_vfuncs (info); i++)
|
||||||
{
|
{
|
||||||
GIVFuncInfo *vfunc = g_interface_info_get_vfunc (info, i);
|
GIVFuncInfo *vfunc = g_interface_info_get_vfunc (info, i);
|
||||||
write_vfunc_info (vfunc, file);
|
write_vfunc_info (namespace, vfunc, file);
|
||||||
g_base_info_unref ((GIBaseInfo *)vfunc);
|
g_base_info_unref ((GIBaseInfo *)vfunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < g_interface_info_get_n_constants (info); i++)
|
for (i = 0; i < g_interface_info_get_n_constants (info); i++)
|
||||||
{
|
{
|
||||||
GIConstantInfo *constant = g_interface_info_get_constant (info, i);
|
GIConstantInfo *constant = g_interface_info_get_constant (info, i);
|
||||||
write_constant_info (constant, file, 6);
|
write_constant_info (namespace, constant, file, 6);
|
||||||
g_base_info_unref ((GIBaseInfo *)constant);
|
g_base_info_unref ((GIBaseInfo *)constant);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -771,21 +817,22 @@ write_interface_info (GIInterfaceInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_error_domain_info (GIErrorDomainInfo *info,
|
write_error_domain_info (const gchar *namespace,
|
||||||
|
GIErrorDomainInfo *info,
|
||||||
FILE *file)
|
FILE *file)
|
||||||
{
|
{
|
||||||
GIBaseInfo *enum_;
|
GIBaseInfo *enum_;
|
||||||
const gchar *name, *quark, *codes;
|
const gchar *name, *quark;
|
||||||
|
|
||||||
name = g_base_info_get_name ((GIBaseInfo *)info);
|
name = g_base_info_get_name ((GIBaseInfo *)info);
|
||||||
quark = g_error_domain_info_get_quark (info);
|
quark = g_error_domain_info_get_quark (info);
|
||||||
enum_ = (GIBaseInfo *)g_error_domain_info_get_codes (info);
|
enum_ = (GIBaseInfo *)g_error_domain_info_get_codes (info);
|
||||||
codes = g_base_info_get_name (enum_);
|
|
||||||
g_base_info_unref (enum_);
|
|
||||||
|
|
||||||
g_fprintf (file,
|
g_fprintf (file,
|
||||||
" <errordomain name=\"%s\" get-quark=\"%s\" codes=\"%s\" />\n",
|
" <errordomain name=\"%s\" get-quark=\"%s\" codes=\"",
|
||||||
name, quark, codes);
|
name, quark);
|
||||||
|
write_type_name (namespace, enum_, file);
|
||||||
|
g_fprintf (file, "\" />\n");
|
||||||
|
g_base_info_unref (enum_);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -794,6 +841,7 @@ write_repository (GIRepository *repository,
|
|||||||
{
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
gchar **namespaces;
|
gchar **namespaces;
|
||||||
|
gchar *ns;
|
||||||
gint i, j;
|
gint i, j;
|
||||||
|
|
||||||
namespaces = g_irepository_get_namespaces (repository);
|
namespaces = g_irepository_get_namespaces (repository);
|
||||||
@ -827,45 +875,46 @@ write_repository (GIRepository *repository,
|
|||||||
|
|
||||||
for (i = 0; namespaces[i]; i++)
|
for (i = 0; namespaces[i]; i++)
|
||||||
{
|
{
|
||||||
g_fprintf (file, " <namespace name=\"%s\">\n", namespaces[i]);
|
ns = namespaces[i];
|
||||||
|
g_fprintf (file, " <namespace name=\"%s\">\n", ns);
|
||||||
|
|
||||||
for (j = 0; j < g_irepository_get_n_infos (repository, namespaces[i]); j++)
|
for (j = 0; j < g_irepository_get_n_infos (repository, ns); j++)
|
||||||
{
|
{
|
||||||
GIBaseInfo *info = g_irepository_get_info (repository, namespaces[i], j);
|
GIBaseInfo *info = g_irepository_get_info (repository, ns, j);
|
||||||
switch (g_base_info_get_type (info))
|
switch (g_base_info_get_type (info))
|
||||||
{
|
{
|
||||||
case GI_INFO_TYPE_FUNCTION:
|
case GI_INFO_TYPE_FUNCTION:
|
||||||
write_function_info ((GIFunctionInfo *)info, file, 4);
|
write_function_info (ns, (GIFunctionInfo *)info, file, 4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_CALLBACK:
|
case GI_INFO_TYPE_CALLBACK:
|
||||||
write_callback_info ((GICallbackInfo *)info, file, 4);
|
write_callback_info (ns, (GICallbackInfo *)info, file, 4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_STRUCT:
|
case GI_INFO_TYPE_STRUCT:
|
||||||
case GI_INFO_TYPE_BOXED:
|
case GI_INFO_TYPE_BOXED:
|
||||||
write_struct_info ((GIStructInfo *)info, file);
|
write_struct_info (ns, (GIStructInfo *)info, file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_ENUM:
|
case GI_INFO_TYPE_ENUM:
|
||||||
case GI_INFO_TYPE_FLAGS:
|
case GI_INFO_TYPE_FLAGS:
|
||||||
write_enum_info ((GIEnumInfo *)info, file);
|
write_enum_info (ns, (GIEnumInfo *)info, file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_CONSTANT:
|
case GI_INFO_TYPE_CONSTANT:
|
||||||
write_constant_info ((GIConstantInfo *)info, file, 4);
|
write_constant_info (ns, (GIConstantInfo *)info, file, 4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_OBJECT:
|
case GI_INFO_TYPE_OBJECT:
|
||||||
write_object_info ((GIObjectInfo *)info, file);
|
write_object_info (ns, (GIObjectInfo *)info, file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_INTERFACE:
|
case GI_INFO_TYPE_INTERFACE:
|
||||||
write_interface_info ((GIInterfaceInfo *)info, file);
|
write_interface_info (ns, (GIInterfaceInfo *)info, file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GI_INFO_TYPE_ERROR_DOMAIN:
|
case GI_INFO_TYPE_ERROR_DOMAIN:
|
||||||
write_error_domain_info ((GIErrorDomainInfo *)info, file);
|
write_error_domain_info (ns, (GIErrorDomainInfo *)info, file);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user