Merge branch 'gir-standard-types' into 'main'

girepository: Use standard types instead of glib specific

See merge request GNOME/glib!3780
This commit is contained in:
Philip Withnall 2024-01-16 18:43:54 +00:00
commit bb37da24a6
55 changed files with 4840 additions and 4857 deletions

View File

@ -1,19 +1,20 @@
#include <stdint.h>
#include <glib.h> #include <glib.h>
#ifndef __CMPH_TYPES_H__ #ifndef __CMPH_TYPES_H__
#define __CMPH_TYPES_H__ #define __CMPH_TYPES_H__
typedef gint8 cmph_int8; typedef int8_t cmph_int8;
typedef guint8 cmph_uint8; typedef uint8_t cmph_uint8;
typedef gint16 cmph_int16; typedef int16_t cmph_int16;
typedef guint16 cmph_uint16; typedef uint16_t cmph_uint16;
typedef gint32 cmph_int32; typedef int32_t cmph_int32;
typedef guint32 cmph_uint32; typedef uint32_t cmph_uint32;
typedef gint64 cmph_int64; typedef int64_t cmph_int64;
typedef guint64 cmph_uint64; typedef uint64_t cmph_uint64;
typedef enum { CMPH_HASH_JENKINS, CMPH_HASH_COUNT } CMPH_HASH; typedef enum { CMPH_HASH_JENKINS, CMPH_HASH_COUNT } CMPH_HASH;
extern const char *cmph_hash_names[]; extern const char *cmph_hash_names[];

View File

@ -36,6 +36,7 @@
#include <gmodule.h> #include <gmodule.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -43,8 +44,8 @@
static gboolean static gboolean
write_all (FILE *out, write_all (FILE *out,
const void *buffer, const void *buffer,
gsize count, size_t count,
gsize *bytes_written, size_t *bytes_written,
GError **error) GError **error)
{ {
size_t ret; size_t ret;
@ -70,12 +71,12 @@ read_line (FILE *input,
size_t *len_out) size_t *len_out)
{ {
GByteArray *buffer = g_byte_array_new (); GByteArray *buffer = g_byte_array_new ();
const guint8 nul = '\0'; const uint8_t nul = '\0';
while (TRUE) while (TRUE)
{ {
size_t ret; size_t ret;
guint8 byte; uint8_t byte;
ret = fread (&byte, 1, 1, input); ret = fread (&byte, 1, 1, input);
if (ret == 0) if (ret == 0)
@ -103,7 +104,7 @@ escaped_printf (FILE *out, const char *fmt, ...)
{ {
char *str; char *str;
va_list args; va_list args;
gsize written; size_t written;
GError *error = NULL; GError *error = NULL;
va_start (args, fmt); va_start (args, fmt);
@ -122,7 +123,7 @@ escaped_printf (FILE *out, const char *fmt, ...)
static void static void
goutput_write (FILE *out, const char *str) goutput_write (FILE *out, const char *str)
{ {
gsize written; size_t written;
GError *error = NULL; GError *error = NULL;
if (!write_all (out, str, strlen (str), &written, &error)) if (!write_all (out, str, strlen (str), &written, &error))
{ {
@ -143,9 +144,9 @@ invoke_get_type (GModule *self, const char *symbol, GError **error)
if (!g_module_symbol (self, symbol, (void**)&sym)) if (!g_module_symbol (self, symbol, (void**)&sym))
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
G_FILE_ERROR_FAILED, G_FILE_ERROR_FAILED,
"Failed to find symbol '%s'", symbol); "Failed to find symbol '%s'", symbol);
return G_TYPE_INVALID; return G_TYPE_INVALID;
} }
@ -153,9 +154,9 @@ invoke_get_type (GModule *self, const char *symbol, GError **error)
if (ret == G_TYPE_INVALID) if (ret == G_TYPE_INVALID)
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
G_FILE_ERROR_FAILED, G_FILE_ERROR_FAILED,
"Function '%s' returned G_TYPE_INVALID", symbol); "Function '%s' returned G_TYPE_INVALID", symbol);
} }
return ret; return ret;
} }
@ -168,9 +169,9 @@ invoke_error_quark (GModule *self, const char *symbol, GError **error)
if (!g_module_symbol (self, symbol, (void**)&sym)) if (!g_module_symbol (self, symbol, (void**)&sym))
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
G_FILE_ERROR_FAILED, G_FILE_ERROR_FAILED,
"Failed to find symbol '%s'", symbol); "Failed to find symbol '%s'", symbol);
return G_TYPE_INVALID; return G_TYPE_INVALID;
} }
@ -250,8 +251,8 @@ value_to_string (const GValue *value)
static void static void
dump_properties (GType type, FILE *out) dump_properties (GType type, FILE *out)
{ {
guint i; unsigned int i;
guint n_properties = 0; unsigned int n_properties = 0;
GParamSpec **props; GParamSpec **props;
if (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT) if (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
@ -273,7 +274,7 @@ dump_properties (GType type, FILE *out)
prop = props[i]; prop = props[i];
if (prop->owner_type != type) if (prop->owner_type != type)
continue; continue;
const GValue *v = g_param_spec_get_default_value (prop); const GValue *v = g_param_spec_get_default_value (prop);
char *default_value = value_to_string (v); char *default_value = value_to_string (v);
@ -303,22 +304,22 @@ dump_properties (GType type, FILE *out)
static void static void
dump_signals (GType type, FILE *out) dump_signals (GType type, FILE *out)
{ {
guint i; unsigned int i;
guint n_sigs; unsigned int n_sigs;
guint *sig_ids; unsigned int *sig_ids;
sig_ids = g_signal_list_ids (type, &n_sigs); sig_ids = g_signal_list_ids (type, &n_sigs);
for (i = 0; i < n_sigs; i++) for (i = 0; i < n_sigs; i++)
{ {
guint sigid; unsigned int sigid;
GSignalQuery query; GSignalQuery query;
guint j; unsigned int j;
sigid = sig_ids[i]; sigid = sig_ids[i];
g_signal_query (sigid, &query); g_signal_query (sigid, &query);
escaped_printf (out, " <signal name=\"%s\" return=\"%s\"", escaped_printf (out, " <signal name=\"%s\" return=\"%s\"",
query.signal_name, g_type_name (query.return_type)); query.signal_name, g_type_name (query.return_type));
if (query.signal_flags & G_SIGNAL_RUN_FIRST) if (query.signal_flags & G_SIGNAL_RUN_FIRST)
escaped_printf (out, " when=\"first\""); escaped_printf (out, " when=\"first\"");
@ -343,10 +344,10 @@ dump_signals (GType type, FILE *out)
goutput_write (out, ">\n"); goutput_write (out, ">\n");
for (j = 0; j < query.n_params; j++) for (j = 0; j < query.n_params; j++)
{ {
escaped_printf (out, " <param type=\"%s\"/>\n", escaped_printf (out, " <param type=\"%s\"/>\n",
g_type_name (query.param_types[j])); g_type_name (query.param_types[j]));
} }
goutput_write (out, " </signal>\n"); goutput_write (out, " </signal>\n");
} }
g_free (sig_ids); g_free (sig_ids);
@ -355,12 +356,12 @@ dump_signals (GType type, FILE *out)
static void static void
dump_object_type (GType type, const char *symbol, FILE *out) dump_object_type (GType type, const char *symbol, FILE *out)
{ {
guint n_interfaces; unsigned int n_interfaces;
guint i; unsigned int i;
GType *interfaces; GType *interfaces;
escaped_printf (out, " <class name=\"%s\" get-type=\"%s\"", escaped_printf (out, " <class name=\"%s\" get-type=\"%s\"",
g_type_name (type), symbol); g_type_name (type), symbol);
if (type != G_TYPE_OBJECT) if (type != G_TYPE_OBJECT)
{ {
GString *parent_str; GString *parent_str;
@ -397,7 +398,7 @@ dump_object_type (GType type, const char *symbol, FILE *out)
{ {
GType itype = interfaces[i]; GType itype = interfaces[i];
escaped_printf (out, " <implements name=\"%s\"/>\n", escaped_printf (out, " <implements name=\"%s\"/>\n",
g_type_name (itype)); g_type_name (itype));
} }
g_free (interfaces); g_free (interfaces);
@ -409,28 +410,28 @@ dump_object_type (GType type, const char *symbol, FILE *out)
static void static void
dump_interface_type (GType type, const char *symbol, FILE *out) dump_interface_type (GType type, const char *symbol, FILE *out)
{ {
guint n_interfaces; unsigned int n_interfaces;
guint i; unsigned int i;
GType *interfaces; GType *interfaces;
escaped_printf (out, " <interface name=\"%s\" get-type=\"%s\">\n", escaped_printf (out, " <interface name=\"%s\" get-type=\"%s\">\n",
g_type_name (type), symbol); g_type_name (type), symbol);
interfaces = g_type_interface_prerequisites (type, &n_interfaces); interfaces = g_type_interface_prerequisites (type, &n_interfaces);
for (i = 0; i < n_interfaces; i++) for (i = 0; i < n_interfaces; i++)
{ {
GType itype = interfaces[i]; GType itype = interfaces[i];
if (itype == G_TYPE_OBJECT) if (itype == G_TYPE_OBJECT)
{ {
/* Treat this as implicit for now; in theory GInterfaces are /* Treat this as implicit for now; in theory GInterfaces are
* supported on things like GstMiniObject, but right now * supported on things like GstMiniObject, but right now
* the introspection system only supports GObject. * the introspection system only supports GObject.
* http://bugzilla.gnome.org/show_bug.cgi?id=559706 * http://bugzilla.gnome.org/show_bug.cgi?id=559706
*/ */
continue; continue;
} }
escaped_printf (out, " <prerequisite name=\"%s\"/>\n", escaped_printf (out, " <prerequisite name=\"%s\"/>\n",
g_type_name (itype)); g_type_name (itype));
} }
g_free (interfaces); g_free (interfaces);
@ -443,25 +444,25 @@ static void
dump_boxed_type (GType type, const char *symbol, FILE *out) dump_boxed_type (GType type, const char *symbol, FILE *out)
{ {
escaped_printf (out, " <boxed name=\"%s\" get-type=\"%s\"/>\n", escaped_printf (out, " <boxed name=\"%s\" get-type=\"%s\"/>\n",
g_type_name (type), symbol); g_type_name (type), symbol);
} }
static void static void
dump_flags_type (GType type, const char *symbol, FILE *out) dump_flags_type (GType type, const char *symbol, FILE *out)
{ {
guint i; unsigned int i;
GFlagsClass *klass; GFlagsClass *klass;
klass = g_type_class_ref (type); klass = g_type_class_ref (type);
escaped_printf (out, " <flags name=\"%s\" get-type=\"%s\">\n", escaped_printf (out, " <flags name=\"%s\" get-type=\"%s\">\n",
g_type_name (type), symbol); g_type_name (type), symbol);
for (i = 0; i < klass->n_values; i++) for (i = 0; i < klass->n_values; i++)
{ {
GFlagsValue *value = &(klass->values[i]); GFlagsValue *value = &(klass->values[i]);
escaped_printf (out, " <member name=\"%s\" nick=\"%s\" value=\"%u\"/>\n", escaped_printf (out, " <member name=\"%s\" nick=\"%s\" value=\"%u\"/>\n",
value->value_name, value->value_nick, value->value); value->value_name, value->value_nick, value->value);
} }
goutput_write (out, " </flags>\n"); goutput_write (out, " </flags>\n");
} }
@ -469,19 +470,19 @@ dump_flags_type (GType type, const char *symbol, FILE *out)
static void static void
dump_enum_type (GType type, const char *symbol, FILE *out) dump_enum_type (GType type, const char *symbol, FILE *out)
{ {
guint i; unsigned int i;
GEnumClass *klass; GEnumClass *klass;
klass = g_type_class_ref (type); klass = g_type_class_ref (type);
escaped_printf (out, " <enum name=\"%s\" get-type=\"%s\">\n", escaped_printf (out, " <enum name=\"%s\" get-type=\"%s\">\n",
g_type_name (type), symbol); g_type_name (type), symbol);
for (i = 0; i < klass->n_values; i++) for (i = 0; i < klass->n_values; i++)
{ {
GEnumValue *value = &(klass->values[i]); GEnumValue *value = &(klass->values[i]);
escaped_printf (out, " <member name=\"%s\" nick=\"%s\" value=\"%d\"/>\n", escaped_printf (out, " <member name=\"%s\" nick=\"%s\" value=\"%d\"/>\n",
value->value_name, value->value_nick, value->value); value->value_name, value->value_nick, value->value);
} }
goutput_write (out, " </enum>"); goutput_write (out, " </enum>");
} }
@ -489,8 +490,8 @@ dump_enum_type (GType type, const char *symbol, FILE *out)
static void static void
dump_fundamental_type (GType type, const char *symbol, FILE *out) dump_fundamental_type (GType type, const char *symbol, FILE *out)
{ {
guint n_interfaces; unsigned int n_interfaces;
guint i; unsigned int i;
GType *interfaces; GType *interfaces;
GString *parent_str; GString *parent_str;
GType parent; GType parent;
@ -498,7 +499,7 @@ dump_fundamental_type (GType type, const char *symbol, FILE *out)
escaped_printf (out, " <fundamental name=\"%s\" get-type=\"%s\"", escaped_printf (out, " <fundamental name=\"%s\" get-type=\"%s\"",
g_type_name (type), symbol); g_type_name (type), symbol);
if (G_TYPE_IS_ABSTRACT (type)) if (G_TYPE_IS_ABSTRACT (type))
escaped_printf (out, " abstract=\"1\""); escaped_printf (out, " abstract=\"1\"");
@ -534,7 +535,7 @@ dump_fundamental_type (GType type, const char *symbol, FILE *out)
{ {
GType itype = interfaces[i]; GType itype = interfaces[i];
escaped_printf (out, " <implements name=\"%s\"/>\n", escaped_printf (out, " <implements name=\"%s\"/>\n",
g_type_name (itype)); g_type_name (itype));
} }
g_free (interfaces); g_free (interfaces);
goutput_write (out, " </fundamental>\n"); goutput_write (out, " </fundamental>\n");
@ -573,7 +574,7 @@ static void
dump_error_quark (GQuark quark, const char *symbol, FILE *out) dump_error_quark (GQuark quark, const char *symbol, FILE *out)
{ {
escaped_printf (out, " <error-quark function=\"%s\" domain=\"%s\"/>\n", escaped_printf (out, " <error-quark function=\"%s\" domain=\"%s\"/>\n",
symbol, g_quark_to_string (quark)); symbol, g_quark_to_string (quark));
} }
/** /**
@ -622,10 +623,10 @@ gi_repository_dump (const char *input_filename,
if (!self) if (!self)
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
G_FILE_ERROR_FAILED, G_FILE_ERROR_FAILED,
"failed to open self: %s", "failed to open self: %s",
g_module_error ()); g_module_error ());
return FALSE; return FALSE;
} }
@ -661,7 +662,7 @@ gi_repository_dump (const char *input_filename,
while (TRUE) while (TRUE)
{ {
gsize len; size_t len;
char *line = read_line (input, &len); char *line = read_line (input, &len);
const char *function; const char *function;

View File

@ -41,12 +41,12 @@ main (int argc,
type = invoke_get_type (self, argv[i], &error); type = invoke_get_type (self, argv[i], &error);
if (!type) if (!type)
{ {
g_printerr ("%s\n", error->message); g_printerr ("%s\n", error->message);
g_clear_error (&error); g_clear_error (&error);
} }
else else
dump_type (type, argv[i], stdout); dump_type (type, argv[i], stdout);
} }
return 0; return 0;

View File

@ -269,7 +269,7 @@ gi_arg_info_get_scope (GIArgInfo *info)
* Returns: Index of the user data argument or `-1` if there is none * Returns: Index of the user data argument or `-1` if there is none
* Since: 2.80 * Since: 2.80
*/ */
gint gssize
gi_arg_info_get_closure_index (GIArgInfo *info) gi_arg_info_get_closure_index (GIArgInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -294,7 +294,7 @@ gi_arg_info_get_closure_index (GIArgInfo *info)
* none * none
* Since: 2.80 * Since: 2.80
*/ */
gint gssize
gi_arg_info_get_destroy_index (GIArgInfo *info) gi_arg_info_get_destroy_index (GIArgInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;

View File

@ -69,10 +69,10 @@ GI_AVAILABLE_IN_ALL
GIScopeType gi_arg_info_get_scope (GIArgInfo *info); GIScopeType gi_arg_info_get_scope (GIArgInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gint gi_arg_info_get_closure_index (GIArgInfo *info); gssize gi_arg_info_get_closure_index (GIArgInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gint gi_arg_info_get_destroy_index (GIArgInfo *info); gssize gi_arg_info_get_destroy_index (GIArgInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypeInfo * gi_arg_info_get_type_info (GIArgInfo *info); GITypeInfo * gi_arg_info_get_type_info (GIArgInfo *info);

View File

@ -45,7 +45,7 @@ struct _GIBaseInfoClass
void gi_base_info_init_types (void); void gi_base_info_init_types (void);
GType gi_base_info_type_register_static (const char *type_name, GType gi_base_info_type_register_static (const char *type_name,
gsize instance_size, size_t instance_size,
GClassInitFunc class_init); GClassInitFunc class_init);
G_END_DECLS G_END_DECLS

View File

@ -64,7 +64,7 @@ value_base_info_copy_value (const GValue *src,
dst->data[0].v_pointer = NULL; dst->data[0].v_pointer = NULL;
} }
static gpointer static void *
value_base_info_peek_pointer (const GValue *value) value_base_info_peek_pointer (const GValue *value)
{ {
return value->data[0].v_pointer; return value->data[0].v_pointer;
@ -96,7 +96,7 @@ value_base_info_collect_value (GValue *value,
return NULL; return NULL;
} }
static gchar * static char *
value_base_info_lcopy_value (const GValue *value, value_base_info_lcopy_value (const GValue *value,
guint n_collect_values, guint n_collect_values,
GTypeCValue *collect_values, GTypeCValue *collect_values,
@ -213,7 +213,7 @@ gi_base_info_get_type (void)
*/ */
GType GType
gi_base_info_type_register_static (const char *type_name, gi_base_info_type_register_static (const char *type_name,
gsize instance_size, size_t instance_size,
GClassInitFunc class_init) GClassInitFunc class_init)
{ {
GTypeInfo info; GTypeInfo info;
@ -264,7 +264,7 @@ GI_DEFINE_BASE_INFO_TYPE (gi_unresolved_info, GI_INFO_TYPE_UNRESOLVED)
void void
gi_base_info_init_types (void) gi_base_info_init_types (void)
{ {
static gsize register_types_once = 0; static size_t register_types_once = 0;
if (g_once_init_enter (&register_types_once)) if (g_once_init_enter (&register_types_once))
{ {
@ -272,7 +272,7 @@ gi_base_info_init_types (void)
{ {
GIInfoType info_type; GIInfoType info_type;
const char *type_name; const char *type_name;
gsize instance_size; size_t instance_size;
GClassInitFunc class_init; GClassInitFunc class_init;
} }
types[] = types[] =
@ -297,7 +297,7 @@ gi_base_info_init_types (void)
{ GI_INFO_TYPE_UNRESOLVED, "GIUnresolvedInfo", sizeof (GIUnresolvedInfo), gi_unresolved_info_class_init }, { GI_INFO_TYPE_UNRESOLVED, "GIUnresolvedInfo", sizeof (GIUnresolvedInfo), gi_unresolved_info_class_init },
}; };
for (gsize i = 0; i < G_N_ELEMENTS (types); i++) for (size_t i = 0; i < G_N_ELEMENTS (types); i++)
{ {
GType registered_type = gi_base_info_type_register_static (g_intern_static_string (types[i].type_name), GType registered_type = gi_base_info_type_register_static (g_intern_static_string (types[i].type_name),
types[i].instance_size, types[i].instance_size,
@ -315,12 +315,13 @@ gi_info_new_full (GIInfoType type,
GIRepository *repository, GIRepository *repository,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset) uint32_t offset)
{ {
GIRealInfo *info; GIRealInfo *info;
g_return_val_if_fail (container != NULL || repository != NULL, NULL); g_return_val_if_fail (container != NULL || repository != NULL, NULL);
g_return_val_if_fail (GI_IS_REPOSITORY (repository), NULL); g_return_val_if_fail (GI_IS_REPOSITORY (repository), NULL);
g_return_val_if_fail (offset <= G_MAXUINT32, NULL);
gi_base_info_init_types (); gi_base_info_init_types ();
g_assert (gi_base_info_types[type] != G_TYPE_INVALID); g_assert (gi_base_info_types[type] != G_TYPE_INVALID);
@ -357,7 +358,7 @@ GIBaseInfo *
gi_info_new (GIInfoType type, gi_info_new (GIInfoType type,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset) size_t offset)
{ {
return gi_info_new_full (type, ((GIRealInfo*)container)->repository, container, typelib, offset); return gi_info_new_full (type, ((GIRealInfo*)container)->repository, container, typelib, offset);
} }
@ -382,7 +383,7 @@ gi_info_init (GIRealInfo *info,
GIRepository *repository, GIRepository *repository,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset) uint32_t offset)
{ {
memset (info, 0, sizeof (GIRealInfo)); memset (info, 0, sizeof (GIRealInfo));
@ -401,7 +402,7 @@ gi_info_init (GIRealInfo *info,
GIBaseInfo * GIBaseInfo *
gi_info_from_entry (GIRepository *repository, gi_info_from_entry (GIRepository *repository,
GITypelib *typelib, GITypelib *typelib,
guint16 index) uint16_t index)
{ {
GIBaseInfo *result; GIBaseInfo *result;
DirEntry *entry = gi_typelib_get_dir_entry (typelib, index); DirEntry *entry = gi_typelib_get_dir_entry (typelib, index);
@ -410,8 +411,8 @@ gi_info_from_entry (GIRepository *repository,
result = gi_info_new_full (entry->blob_type, repository, NULL, typelib, entry->offset); result = gi_info_new_full (entry->blob_type, repository, NULL, typelib, entry->offset);
else else
{ {
const gchar *namespace = gi_typelib_get_string (typelib, entry->offset); const char *namespace = gi_typelib_get_string (typelib, entry->offset);
const gchar *name = gi_typelib_get_string (typelib, entry->name); const char *name = gi_typelib_get_string (typelib, entry->name);
result = gi_repository_find_by_name (repository, namespace, name); result = gi_repository_find_by_name (repository, namespace, name);
if (result == NULL) if (result == NULL)
@ -428,7 +429,7 @@ gi_info_from_entry (GIRepository *repository,
unresolved->namespace = namespace; unresolved->namespace = namespace;
return (GIBaseInfo *)unresolved; return (GIBaseInfo *)unresolved;
} }
return (GIBaseInfo *)result; return (GIBaseInfo *)result;
} }
@ -438,7 +439,7 @@ gi_info_from_entry (GIRepository *repository,
GITypeInfo * GITypeInfo *
gi_type_info_new (GIBaseInfo *container, gi_type_info_new (GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset) uint32_t offset)
{ {
SimpleTypeBlob *type = (SimpleTypeBlob *)&typelib->data[offset]; SimpleTypeBlob *type = (SimpleTypeBlob *)&typelib->data[offset];
@ -450,7 +451,7 @@ void
gi_type_info_init (GIBaseInfo *info, gi_type_info_init (GIBaseInfo *info,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset) uint32_t offset)
{ {
GIRealInfo *rinfo = (GIRealInfo*)container; GIRealInfo *rinfo = (GIRealInfo*)container;
SimpleTypeBlob *type = (SimpleTypeBlob *)&typelib->data[offset]; SimpleTypeBlob *type = (SimpleTypeBlob *)&typelib->data[offset];
@ -564,7 +565,7 @@ gi_base_info_get_info_type (GIBaseInfo *info)
* Returns: (nullable): the name of @info or `NULL` if it lacks a name. * Returns: (nullable): the name of @info or `NULL` if it lacks a name.
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_base_info_get_name (GIBaseInfo *info) gi_base_info_get_name (GIBaseInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo*)info; GIRealInfo *rinfo = (GIRealInfo*)info;
@ -661,7 +662,7 @@ gi_base_info_get_name (GIBaseInfo *info)
* Returns: the namespace * Returns: the namespace
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_base_info_get_namespace (GIBaseInfo *info) gi_base_info_get_namespace (GIBaseInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo*) info; GIRealInfo *rinfo = (GIRealInfo*) info;
@ -757,16 +758,16 @@ gi_base_info_is_deprecated (GIBaseInfo *info)
* attribute exists * attribute exists
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_base_info_get_attribute (GIBaseInfo *info, gi_base_info_get_attribute (GIBaseInfo *info,
const gchar *name) const char *name)
{ {
GIAttributeIter iter = { 0, }; GIAttributeIter iter = { 0, };
const char *curname, *curvalue; const char *curname, *curvalue;
while (gi_base_info_iterate_attributes (info, &iter, &curname, &curvalue)) while (gi_base_info_iterate_attributes (info, &iter, &curname, &curvalue))
{ {
if (strcmp (name, curname) == 0) if (strcmp (name, curname) == 0)
return (const gchar*) curvalue; return (const char *) curvalue;
} }
return NULL; return NULL;
@ -800,7 +801,7 @@ cmp_attribute (const void *av,
*/ */
AttributeBlob * AttributeBlob *
_attribute_blob_find_first (GIBaseInfo *info, _attribute_blob_find_first (GIBaseInfo *info,
guint32 blob_offset) uint32_t blob_offset)
{ {
GIRealInfo *rinfo = (GIRealInfo *) info; GIRealInfo *rinfo = (GIRealInfo *) info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
@ -865,8 +866,8 @@ _attribute_blob_find_first (GIBaseInfo *info,
gboolean gboolean
gi_base_info_iterate_attributes (GIBaseInfo *info, gi_base_info_iterate_attributes (GIBaseInfo *info,
GIAttributeIter *iterator, GIAttributeIter *iterator,
const gchar **name, const char **name,
const gchar **value) const char **value)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;

View File

@ -44,13 +44,11 @@ G_BEGIN_DECLS
*/ */
typedef struct { typedef struct {
/*< private >*/ /*< private >*/
gpointer data; void *data;
gpointer data2; void *_dummy[4];
gpointer data3;
gpointer data4;
} GIAttributeIter; } GIAttributeIter;
#define GI_TYPE_BASE_INFO (gi_base_info_get_type ()) #define GI_TYPE_BASE_INFO (gi_base_info_get_type ())
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
@ -66,17 +64,17 @@ GI_AVAILABLE_IN_ALL
GIInfoType gi_base_info_get_info_type (GIBaseInfo *info); GIInfoType gi_base_info_get_info_type (GIBaseInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_base_info_get_name (GIBaseInfo *info); const char * gi_base_info_get_name (GIBaseInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_base_info_get_namespace (GIBaseInfo *info); const char * gi_base_info_get_namespace (GIBaseInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_base_info_is_deprecated (GIBaseInfo *info); gboolean gi_base_info_is_deprecated (GIBaseInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_base_info_get_attribute (GIBaseInfo *info, const char * gi_base_info_get_attribute (GIBaseInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_base_info_iterate_attributes (GIBaseInfo *info, gboolean gi_base_info_iterate_attributes (GIBaseInfo *info,
@ -98,6 +96,6 @@ GI_AVAILABLE_IN_ALL
GIBaseInfo * gi_info_new (GIInfoType type, GIBaseInfo * gi_info_new (GIInfoType type,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset); size_t offset);
G_END_DECLS G_END_DECLS

View File

@ -54,7 +54,7 @@
* Since: 2.80 * Since: 2.80
*/ */
static guint32 static uint32_t
signature_offset (GICallableInfo *info) signature_offset (GICallableInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo*)info; GIRealInfo *rinfo = (GIRealInfo*)info;
@ -78,7 +78,7 @@ signature_offset (GICallableInfo *info)
g_assert_not_reached (); g_assert_not_reached ();
} }
if (sigoff >= 0) if (sigoff >= 0)
return *(guint32 *)&rinfo->typelib->data[rinfo->offset + sigoff]; return *(uint32_t *)&rinfo->typelib->data[rinfo->offset + sigoff];
return 0; return 0;
} }
@ -180,7 +180,7 @@ GITypeInfo *
gi_callable_info_get_return_type (GICallableInfo *info) gi_callable_info_get_return_type (GICallableInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
guint32 offset; uint32_t offset;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_CALLABLE_INFO (info), NULL); g_return_val_if_fail (GI_IS_CALLABLE_INFO (info), NULL);
@ -208,7 +208,7 @@ gi_callable_info_load_return_type (GICallableInfo *info,
GITypeInfo *type) GITypeInfo *type)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
guint32 offset; uint32_t offset;
g_return_if_fail (info != NULL); g_return_if_fail (info != NULL);
g_return_if_fail (GI_IS_CALLABLE_INFO (info)); g_return_if_fail (GI_IS_CALLABLE_INFO (info));
@ -331,11 +331,11 @@ gi_callable_info_get_instance_ownership_transfer (GICallableInfo *info)
* Returns: The number of arguments this callable expects. * Returns: The number of arguments this callable expects.
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_callable_info_get_n_args (GICallableInfo *info) gi_callable_info_get_n_args (GICallableInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
gint offset; uint32_t offset;
SignatureBlob *blob; SignatureBlob *blob;
g_return_val_if_fail (info != NULL, -1); g_return_val_if_fail (info != NULL, -1);
@ -360,14 +360,15 @@ gi_callable_info_get_n_args (GICallableInfo *info)
*/ */
GIArgInfo * GIArgInfo *
gi_callable_info_get_arg (GICallableInfo *info, gi_callable_info_get_arg (GICallableInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
gint offset; uint32_t offset;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_CALLABLE_INFO (info), NULL); g_return_val_if_fail (GI_IS_CALLABLE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
offset = signature_offset (info); offset = signature_offset (info);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
@ -392,15 +393,16 @@ gi_callable_info_get_arg (GICallableInfo *info,
*/ */
void void
gi_callable_info_load_arg (GICallableInfo *info, gi_callable_info_load_arg (GICallableInfo *info,
guint n, unsigned int n,
GIArgInfo *arg) GIArgInfo *arg)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
gint offset; uint32_t offset;
g_return_if_fail (info != NULL); g_return_if_fail (info != NULL);
g_return_if_fail (GI_IS_CALLABLE_INFO (info)); g_return_if_fail (GI_IS_CALLABLE_INFO (info));
g_return_if_fail (n <= G_MAXUINT16);
offset = signature_offset (info); offset = signature_offset (info);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
@ -420,16 +422,16 @@ gi_callable_info_load_arg (GICallableInfo *info,
* attribute exists * attribute exists
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_callable_info_get_return_attribute (GICallableInfo *info, gi_callable_info_get_return_attribute (GICallableInfo *info,
const gchar *name) const char *name)
{ {
GIAttributeIter iter = { 0, }; GIAttributeIter iter = { 0, };
const char *curname, *curvalue; const char *curname, *curvalue;
while (gi_callable_info_iterate_return_attributes (info, &iter, &curname, &curvalue)) while (gi_callable_info_iterate_return_attributes (info, &iter, &curname, &curvalue))
{ {
if (g_strcmp0 (name, curname) == 0) if (g_strcmp0 (name, curname) == 0)
return (const gchar*) curvalue; return (const char*) curvalue;
} }
return NULL; return NULL;
@ -466,7 +468,7 @@ gi_callable_info_iterate_return_attributes (GICallableInfo *info,
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
AttributeBlob *next, *after; AttributeBlob *next, *after;
guint32 blob_offset; uint32_t blob_offset;
after = (AttributeBlob *) &rinfo->typelib->data[header->attributes + after = (AttributeBlob *) &rinfo->typelib->data[header->attributes +
header->n_attributes * header->attribute_blob_size]; header->n_attributes * header->attribute_blob_size];
@ -518,30 +520,30 @@ gi_type_tag_extract_ffi_return_value (GITypeTag return_tag,
{ {
switch (return_tag) { switch (return_tag) {
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
arg->v_int8 = (gint8) ffi_value->v_long; arg->v_int8 = (int8_t) ffi_value->v_long;
break; break;
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
arg->v_uint8 = (guint8) ffi_value->v_ulong; arg->v_uint8 = (uint8_t) ffi_value->v_ulong;
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
arg->v_int16 = (gint16) ffi_value->v_long; arg->v_int16 = (int16_t) ffi_value->v_long;
break; break;
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
arg->v_uint16 = (guint16) ffi_value->v_ulong; arg->v_uint16 = (uint16_t) ffi_value->v_ulong;
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
arg->v_int32 = (gint32) ffi_value->v_long; arg->v_int32 = (int32_t) ffi_value->v_long;
break; break;
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_BOOLEAN: case GI_TYPE_TAG_BOOLEAN:
case GI_TYPE_TAG_UNICHAR: case GI_TYPE_TAG_UNICHAR:
arg->v_uint32 = (guint32) ffi_value->v_ulong; arg->v_uint32 = (uint32_t) ffi_value->v_ulong;
break; break;
case GI_TYPE_TAG_INT64: case GI_TYPE_TAG_INT64:
arg->v_int64 = (gint64) ffi_value->v_int64; arg->v_int64 = (int64_t) ffi_value->v_int64;
break; break;
case GI_TYPE_TAG_UINT64: case GI_TYPE_TAG_UINT64:
arg->v_uint64 = (guint64) ffi_value->v_uint64; arg->v_uint64 = (uint64_t) ffi_value->v_uint64;
break; break;
case GI_TYPE_TAG_FLOAT: case GI_TYPE_TAG_FLOAT:
arg->v_float = ffi_value->v_float; arg->v_float = ffi_value->v_float;
@ -553,15 +555,15 @@ gi_type_tag_extract_ffi_return_value (GITypeTag return_tag,
switch(interface_type) { switch(interface_type) {
case GI_INFO_TYPE_ENUM: case GI_INFO_TYPE_ENUM:
case GI_INFO_TYPE_FLAGS: case GI_INFO_TYPE_FLAGS:
arg->v_int32 = (gint32) ffi_value->v_long; arg->v_int32 = (int32_t) ffi_value->v_long;
break; break;
default: default:
arg->v_pointer = (gpointer) ffi_value->v_pointer; arg->v_pointer = (void *) ffi_value->v_pointer;
break; break;
} }
break; break;
default: default:
arg->v_pointer = (gpointer) ffi_value->v_pointer; arg->v_pointer = (void *) ffi_value->v_pointer;
break; break;
} }
} }
@ -629,11 +631,11 @@ gi_type_info_extract_ffi_return_value (GITypeInfo *return_info,
*/ */
gboolean gboolean
gi_callable_info_invoke (GICallableInfo *info, gi_callable_info_invoke (GICallableInfo *info,
gpointer function, void *function,
const GIArgument *in_args, const GIArgument *in_args,
gsize n_in_args, size_t n_in_args,
GIArgument *out_args, GIArgument *out_args,
gsize n_out_args, size_t n_out_args,
GIArgument *return_value, GIArgument *return_value,
GError **error) GError **error)
{ {
@ -644,13 +646,13 @@ gi_callable_info_invoke (GICallableInfo *info,
GITypeInfo *rinfo; GITypeInfo *rinfo;
GITypeTag rtag; GITypeTag rtag;
GIArgInfo *ainfo; GIArgInfo *ainfo;
gsize n_args, n_invoke_args, in_pos, out_pos, i; size_t n_args, n_invoke_args, in_pos, out_pos, i;
gpointer *args; void **args;
gboolean success = FALSE; gboolean success = FALSE;
GError *local_error = NULL; GError *local_error = NULL;
gpointer error_address = &local_error; void *error_address = &local_error;
GIFFIReturnValue ffi_return_value; GIFFIReturnValue ffi_return_value;
gpointer return_value_p; /* Will point inside the union return_value */ void *return_value_p; /* Will point inside the union return_value */
gboolean is_method, throws; gboolean is_method, throws;
rinfo = gi_callable_info_get_return_type ((GICallableInfo *)info); rinfo = gi_callable_info_get_return_type ((GICallableInfo *)info);
@ -684,12 +686,12 @@ gi_callable_info_invoke (GICallableInfo *info,
n_invoke_args ++; n_invoke_args ++;
atypes = g_alloca (sizeof (ffi_type*) * n_invoke_args); atypes = g_alloca (sizeof (ffi_type*) * n_invoke_args);
args = g_alloca (sizeof (gpointer) * n_invoke_args); args = g_alloca (sizeof (void *) * n_invoke_args);
if (is_method) if (is_method)
{ {
atypes[0] = &ffi_type_pointer; atypes[0] = &ffi_type_pointer;
args[0] = (gpointer) &in_args[0]; args[0] = (void *) &in_args[0];
} }
for (i = 0; i < n_args; i++) for (i = 0; i < n_args; i++)
{ {
@ -712,7 +714,7 @@ gi_callable_info_invoke (GICallableInfo *info,
goto out; goto out;
} }
args[i+offset] = (gpointer)&in_args[in_pos]; args[i+offset] = (void *)&in_args[in_pos];
in_pos++; in_pos++;
break; break;
@ -729,7 +731,7 @@ gi_callable_info_invoke (GICallableInfo *info,
goto out; goto out;
} }
args[i+offset] = (gpointer)&out_args[out_pos]; args[i+offset] = (void *)&out_args[out_pos];
out_pos++; out_pos++;
break; break;
case GI_DIRECTION_INOUT: case GI_DIRECTION_INOUT:
@ -754,7 +756,7 @@ gi_callable_info_invoke (GICallableInfo *info,
goto out; goto out;
} }
args[i+offset] = (gpointer)&in_args[in_pos]; args[i+offset] = (void *)&in_args[in_pos];
in_pos++; in_pos++;
out_pos++; out_pos++;
break; break;

View File

@ -40,7 +40,7 @@ G_BEGIN_DECLS
* *
* Since: 2.80 * Since: 2.80
*/ */
#define GI_IS_CALLABLE_INFO(info) \ #define GI_IS_CALLABLE_INFO(info) \
((gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_FUNCTION) || \ ((gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_FUNCTION) || \
(gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_CALLBACK) || \ (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_CALLBACK) || \
(gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_SIGNAL) || \ (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_SIGNAL) || \
@ -61,8 +61,8 @@ void gi_callable_info_load_return_type (GICallableInfo *info,
GITypeInfo *type); GITypeInfo *type);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_callable_info_get_return_attribute (GICallableInfo *info, const char * gi_callable_info_get_return_attribute (GICallableInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_callable_info_iterate_return_attributes (GICallableInfo *info, gboolean gi_callable_info_iterate_return_attributes (GICallableInfo *info,
@ -80,24 +80,24 @@ GI_AVAILABLE_IN_ALL
gboolean gi_callable_info_skip_return (GICallableInfo *info); gboolean gi_callable_info_skip_return (GICallableInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_callable_info_get_n_args (GICallableInfo *info); unsigned int gi_callable_info_get_n_args (GICallableInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIArgInfo * gi_callable_info_get_arg (GICallableInfo *info, GIArgInfo * gi_callable_info_get_arg (GICallableInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
void gi_callable_info_load_arg (GICallableInfo *info, void gi_callable_info_load_arg (GICallableInfo *info,
guint n, unsigned int n,
GIArgInfo *arg); GIArgInfo *arg);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_callable_info_invoke (GICallableInfo *info, gboolean gi_callable_info_invoke (GICallableInfo *info,
gpointer function, void *function,
const GIArgument *in_args, const GIArgument *in_args,
gsize n_in_args, size_t n_in_args,
GIArgument *out_args, GIArgument *out_args,
gsize n_out_args, size_t n_out_args,
GIArgument *return_value, GIArgument *return_value,
GError **error); GError **error);

View File

@ -39,7 +39,7 @@ G_BEGIN_DECLS
* *
* Since: 2.80 * Since: 2.80
*/ */
#define GI_IS_CALLBACK_INFO(info) \ #define GI_IS_CALLBACK_INFO(info) \
(gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_CALLBACK) (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_CALLBACK)
G_END_DECLS G_END_DECLS

View File

@ -116,7 +116,7 @@ gi_constant_info_free_value (GIConstantInfo *info,
* Returns: size of the constant, in bytes * Returns: size of the constant, in bytes
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_constant_info_get_value (GIConstantInfo *info, gi_constant_info_get_value (GIConstantInfo *info,
GIArgument *value) GIArgument *value)
{ {
@ -133,51 +133,51 @@ gi_constant_info_get_value (GIConstantInfo *info,
{ {
if (blob->type.flags.pointer) if (blob->type.flags.pointer)
{ {
gsize blob_size = blob->size; size_t blob_size = blob->size;
value->v_pointer = g_memdup2 (&rinfo->typelib->data[blob->offset], blob_size); value->v_pointer = g_memdup2 (&rinfo->typelib->data[blob->offset], blob_size);
} }
else else
{ {
switch (blob->type.flags.tag) switch (blob->type.flags.tag)
{ {
case GI_TYPE_TAG_BOOLEAN: case GI_TYPE_TAG_BOOLEAN:
value->v_boolean = *(gboolean*)&rinfo->typelib->data[blob->offset]; value->v_boolean = *(gboolean*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
value->v_int8 = *(gint8*)&rinfo->typelib->data[blob->offset]; value->v_int8 = *(int8_t*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
value->v_uint8 = *(guint8*)&rinfo->typelib->data[blob->offset]; value->v_uint8 = *(uint8_t*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
value->v_int16 = *(gint16*)&rinfo->typelib->data[blob->offset]; value->v_int16 = *(int16_t*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
value->v_uint16 = *(guint16*)&rinfo->typelib->data[blob->offset]; value->v_uint16 = *(uint16_t*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
value->v_int32 = *(gint32*)&rinfo->typelib->data[blob->offset]; value->v_int32 = *(int32_t*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
value->v_uint32 = *(guint32*)&rinfo->typelib->data[blob->offset]; value->v_uint32 = *(uint32_t*)&rinfo->typelib->data[blob->offset];
break; break;
case GI_TYPE_TAG_INT64: case GI_TYPE_TAG_INT64:
DO_ALIGNED_COPY(&value->v_int64, &rinfo->typelib->data[blob->offset], gint64); DO_ALIGNED_COPY (&value->v_int64, &rinfo->typelib->data[blob->offset], int64_t);
break; break;
case GI_TYPE_TAG_UINT64: case GI_TYPE_TAG_UINT64:
DO_ALIGNED_COPY(&value->v_uint64, &rinfo->typelib->data[blob->offset], guint64); DO_ALIGNED_COPY (&value->v_uint64, &rinfo->typelib->data[blob->offset], uint64_t);
break; break;
case GI_TYPE_TAG_FLOAT: case GI_TYPE_TAG_FLOAT:
DO_ALIGNED_COPY(&value->v_float, &rinfo->typelib->data[blob->offset], gfloat); DO_ALIGNED_COPY (&value->v_float, &rinfo->typelib->data[blob->offset], float);
break; break;
case GI_TYPE_TAG_DOUBLE: case GI_TYPE_TAG_DOUBLE:
DO_ALIGNED_COPY(&value->v_double, &rinfo->typelib->data[blob->offset], gdouble); DO_ALIGNED_COPY (&value->v_double, &rinfo->typelib->data[blob->offset], double);
break; break;
default: default:
g_assert_not_reached (); g_assert_not_reached ();
} }
} }
} }
return blob->size; return blob->size;

View File

@ -52,6 +52,6 @@ void gi_constant_info_free_value (GIConstantInfo *info,
GIArgument *value); GIArgument *value);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_constant_info_get_value (GIConstantInfo *info, size_t gi_constant_info_get_value (GIConstantInfo *info,
GIArgument *value); GIArgument *value);
G_END_DECLS G_END_DECLS

View File

@ -55,7 +55,7 @@
* Returns: the number of enumeration values * Returns: the number of enumeration values
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_enum_info_get_n_values (GIEnumInfo *info) gi_enum_info_get_n_values (GIEnumInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -80,7 +80,7 @@ gi_enum_info_get_n_values (GIEnumInfo *info)
* associated with this enum, or `NULL`. * associated with this enum, or `NULL`.
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_enum_info_get_error_domain (GIEnumInfo *info) gi_enum_info_get_error_domain (GIEnumInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -110,14 +110,15 @@ gi_enum_info_get_error_domain (GIEnumInfo *info)
*/ */
GIValueInfo * GIValueInfo *
gi_enum_info_get_value (GIEnumInfo *info, gi_enum_info_get_value (GIEnumInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
gint offset; size_t offset;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_ENUM_INFO (info), NULL); g_return_val_if_fail (GI_IS_ENUM_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
offset = rinfo->offset + header->enum_blob_size offset = rinfo->offset + header->enum_blob_size
@ -135,7 +136,7 @@ gi_enum_info_get_value (GIEnumInfo *info,
* Returns: number of methods * Returns: number of methods
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_enum_info_get_n_methods (GIEnumInfo *info) gi_enum_info_get_n_methods (GIEnumInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -162,15 +163,16 @@ gi_enum_info_get_n_methods (GIEnumInfo *info)
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_enum_info_get_method (GIEnumInfo *info, gi_enum_info_get_method (GIEnumInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
EnumBlob *blob; EnumBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_ENUM_INFO (info), NULL); g_return_val_if_fail (GI_IS_ENUM_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (EnumBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (EnumBlob *)&rinfo->typelib->data[rinfo->offset];
@ -238,11 +240,11 @@ gi_enum_info_class_init (gpointer g_class,
* Obtain the enumeration value of the `GIValueInfo`. * Obtain the enumeration value of the `GIValueInfo`.
* *
* Returns: the enumeration value. This will always be representable * Returns: the enumeration value. This will always be representable
* as a 32-bit signed or unsigned value. The use of `gint64` as the * as a 32-bit signed or unsigned value. The use of `int64_t` as the
* return type is to allow both. * return type is to allow both.
* Since: 2.80 * Since: 2.80
*/ */
gint64 int64_t
gi_value_info_get_value (GIValueInfo *info) gi_value_info_get_value (GIValueInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -254,9 +256,9 @@ gi_value_info_get_value (GIValueInfo *info)
blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset];
if (blob->unsigned_value) if (blob->unsigned_value)
return (gint64)(guint32)blob->value; return (int64_t)(uint32_t)blob->value;
else else
return (gint64)blob->value; return (int64_t)blob->value;
} }
void void

View File

@ -57,27 +57,27 @@ G_BEGIN_DECLS
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_enum_info_get_n_values (GIEnumInfo *info); unsigned int gi_enum_info_get_n_values (GIEnumInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIValueInfo * gi_enum_info_get_value (GIEnumInfo *info, GIValueInfo * gi_enum_info_get_value (GIEnumInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_enum_info_get_n_methods (GIEnumInfo *info); unsigned int gi_enum_info_get_n_methods (GIEnumInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_enum_info_get_method (GIEnumInfo *info, GIFunctionInfo * gi_enum_info_get_method (GIEnumInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypeTag gi_enum_info_get_storage_type (GIEnumInfo *info); GITypeTag gi_enum_info_get_storage_type (GIEnumInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_enum_info_get_error_domain (GIEnumInfo *info); const char * gi_enum_info_get_error_domain (GIEnumInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gint64 gi_value_info_get_value (GIValueInfo *info); int64_t gi_value_info_get_value (GIValueInfo *info);
G_END_DECLS G_END_DECLS

View File

@ -95,7 +95,7 @@ gi_field_info_get_flags (GIFieldInfo *info)
* Returns: the field size, in bits * Returns: the field size, in bits
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_field_info_get_size (GIFieldInfo *info) gi_field_info_get_size (GIFieldInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -119,7 +119,7 @@ gi_field_info_get_size (GIFieldInfo *info)
* Returns: the field offset, in bytes * Returns: the field offset, in bytes
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_field_info_get_offset (GIFieldInfo *info) gi_field_info_get_offset (GIFieldInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -187,7 +187,7 @@ gi_field_info_get_type_info (GIFieldInfo *info)
*/ */
gboolean gboolean
gi_field_info_get_field (GIFieldInfo *field_info, gi_field_info_get_field (GIFieldInfo *field_info,
gpointer mem, void *mem,
GIArgument *value) GIArgument *value)
{ {
int offset; int offset;
@ -205,157 +205,157 @@ gi_field_info_get_field (GIFieldInfo *field_info,
if (gi_type_info_is_pointer (type_info)) if (gi_type_info_is_pointer (type_info))
{ {
value->v_pointer = G_STRUCT_MEMBER (gpointer, mem, offset); value->v_pointer = G_STRUCT_MEMBER (void *, mem, offset);
result = TRUE; result = TRUE;
} }
else else
{ {
switch (gi_type_info_get_tag (type_info)) switch (gi_type_info_get_tag (type_info))
{ {
case GI_TYPE_TAG_VOID: case GI_TYPE_TAG_VOID:
g_warning("Field %s: should not be have void type", g_warning("Field %s: should not be have void type",
gi_base_info_get_name ((GIBaseInfo *)field_info)); gi_base_info_get_name ((GIBaseInfo *)field_info));
break; break;
case GI_TYPE_TAG_BOOLEAN: case GI_TYPE_TAG_BOOLEAN:
value->v_boolean = G_STRUCT_MEMBER (gboolean, mem, offset) != FALSE; value->v_boolean = G_STRUCT_MEMBER (gboolean, mem, offset) != FALSE;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
value->v_uint8 = G_STRUCT_MEMBER (guint8, mem, offset); value->v_uint8 = G_STRUCT_MEMBER (uint8_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
value->v_uint16 = G_STRUCT_MEMBER (guint16, mem, offset); value->v_uint16 = G_STRUCT_MEMBER (uint16_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_UNICHAR: case GI_TYPE_TAG_UNICHAR:
value->v_uint32 = G_STRUCT_MEMBER (guint32, mem, offset); value->v_uint32 = G_STRUCT_MEMBER (uint32_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT64: case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64: case GI_TYPE_TAG_UINT64:
value->v_uint64 = G_STRUCT_MEMBER (guint64, mem, offset); value->v_uint64 = G_STRUCT_MEMBER (uint64_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_GTYPE: case GI_TYPE_TAG_GTYPE:
value->v_size = G_STRUCT_MEMBER (gsize, mem, offset); value->v_size = G_STRUCT_MEMBER (size_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_FLOAT: case GI_TYPE_TAG_FLOAT:
value->v_float = G_STRUCT_MEMBER (gfloat, mem, offset); value->v_float = G_STRUCT_MEMBER (float, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_DOUBLE: case GI_TYPE_TAG_DOUBLE:
value->v_double = G_STRUCT_MEMBER (gdouble, mem, offset); value->v_double = G_STRUCT_MEMBER (double, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_ARRAY: case GI_TYPE_TAG_ARRAY:
/* We don't check the array type and that it is fixed-size, /* We don't check the array type and that it is fixed-size,
we trust g-ir-compiler to do the right thing */ we trust g-ir-compiler to do the right thing */
value->v_pointer = G_STRUCT_MEMBER_P (mem, offset); value->v_pointer = G_STRUCT_MEMBER_P (mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_UTF8: case GI_TYPE_TAG_UTF8:
case GI_TYPE_TAG_FILENAME: case GI_TYPE_TAG_FILENAME:
case GI_TYPE_TAG_GLIST: case GI_TYPE_TAG_GLIST:
case GI_TYPE_TAG_GSLIST: case GI_TYPE_TAG_GSLIST:
case GI_TYPE_TAG_GHASH: case GI_TYPE_TAG_GHASH:
g_warning("Field %s: type %s should have is_pointer set", g_warning("Field %s: type %s should have is_pointer set",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_type_tag_to_string (gi_type_info_get_tag (type_info))); gi_type_tag_to_string (gi_type_info_get_tag (type_info)));
break; break;
case GI_TYPE_TAG_ERROR: case GI_TYPE_TAG_ERROR:
/* Needs to be handled by the language binding directly */ /* Needs to be handled by the language binding directly */
break; break;
case GI_TYPE_TAG_INTERFACE: case GI_TYPE_TAG_INTERFACE:
{ {
GIBaseInfo *interface = gi_type_info_get_interface (type_info); GIBaseInfo *interface = gi_type_info_get_interface (type_info);
switch (gi_base_info_get_info_type (interface)) switch (gi_base_info_get_info_type (interface))
{ {
case GI_INFO_TYPE_STRUCT: case GI_INFO_TYPE_STRUCT:
case GI_INFO_TYPE_UNION: case GI_INFO_TYPE_UNION:
case GI_INFO_TYPE_BOXED: case GI_INFO_TYPE_BOXED:
/* Needs to be handled by the language binding directly */ /* Needs to be handled by the language binding directly */
break; break;
case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_OBJECT:
break; break;
case GI_INFO_TYPE_ENUM: case GI_INFO_TYPE_ENUM:
case GI_INFO_TYPE_FLAGS: case GI_INFO_TYPE_FLAGS:
{ {
/* FIXME: there's a mismatch here between the value->v_int we use /* FIXME: there's a mismatch here between the value->v_int we use
* here and the gint64 result returned from gi_value_info_get_value(). * here and the int64_t result returned from gi_value_info_get_value().
* But to switch this to gint64, we'd have to make gi_function_info_invoke() * But to switch this to int64_t, we'd have to make gi_function_info_invoke()
* translate value->v_int64 to the proper ABI for an enum function * translate value->v_int64 to the proper ABI for an enum function
* call parameter, which will usually be int, and then fix up language * call parameter, which will usually be int, and then fix up language
* bindings. * bindings.
*/ */
GITypeTag storage_type = gi_enum_info_get_storage_type ((GIEnumInfo *)interface); GITypeTag storage_type = gi_enum_info_get_storage_type ((GIEnumInfo *)interface);
switch (storage_type) switch (storage_type)
{ {
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
value->v_int = (gint)G_STRUCT_MEMBER (guint8, mem, offset); value->v_int = (int)G_STRUCT_MEMBER (uint8_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
value->v_int = (gint)G_STRUCT_MEMBER (guint16, mem, offset); value->v_int = (int)G_STRUCT_MEMBER (uint16_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
value->v_int = (gint)G_STRUCT_MEMBER (guint32, mem, offset); value->v_int = (int)G_STRUCT_MEMBER (uint32_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT64: case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64: case GI_TYPE_TAG_UINT64:
value->v_int = (gint)G_STRUCT_MEMBER (guint64, mem, offset); value->v_int = (int)G_STRUCT_MEMBER (uint64_t, mem, offset);
result = TRUE; result = TRUE;
break; break;
default: default:
g_warning("Field %s: Unexpected enum storage type %s", g_warning("Field %s: Unexpected enum storage type %s",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_type_tag_to_string (storage_type)); gi_type_tag_to_string (storage_type));
break; break;
} }
break; break;
} }
case GI_INFO_TYPE_VFUNC: case GI_INFO_TYPE_VFUNC:
case GI_INFO_TYPE_CALLBACK: case GI_INFO_TYPE_CALLBACK:
g_warning("Field %s: Interface type %d should have is_pointer set", g_warning("Field %s: Interface type %d should have is_pointer set",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_base_info_get_info_type (interface)); gi_base_info_get_info_type (interface));
break; break;
case GI_INFO_TYPE_INVALID: case GI_INFO_TYPE_INVALID:
case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_INTERFACE:
case GI_INFO_TYPE_FUNCTION: case GI_INFO_TYPE_FUNCTION:
case GI_INFO_TYPE_CONSTANT: case GI_INFO_TYPE_CONSTANT:
case GI_INFO_TYPE_VALUE: case GI_INFO_TYPE_VALUE:
case GI_INFO_TYPE_SIGNAL: case GI_INFO_TYPE_SIGNAL:
case GI_INFO_TYPE_PROPERTY: case GI_INFO_TYPE_PROPERTY:
case GI_INFO_TYPE_FIELD: case GI_INFO_TYPE_FIELD:
case GI_INFO_TYPE_ARG: case GI_INFO_TYPE_ARG:
case GI_INFO_TYPE_TYPE: case GI_INFO_TYPE_TYPE:
case GI_INFO_TYPE_UNRESOLVED: case GI_INFO_TYPE_UNRESOLVED:
g_warning("Field %s: Interface type %d not expected", g_warning("Field %s: Interface type %d not expected",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_base_info_get_info_type (interface)); gi_base_info_get_info_type (interface));
break; break;
default: default:
break; break;
} }
gi_base_info_unref ((GIBaseInfo *)interface); gi_base_info_unref ((GIBaseInfo *)interface);
break; break;
} }
break; break;
default: default:
break; break;
} }
} }
gi_base_info_unref ((GIBaseInfo *)type_info); gi_base_info_unref ((GIBaseInfo *)type_info);
@ -383,7 +383,7 @@ gi_field_info_get_field (GIFieldInfo *field_info,
*/ */
gboolean gboolean
gi_field_info_set_field (GIFieldInfo *field_info, gi_field_info_set_field (GIFieldInfo *field_info,
gpointer mem, void *mem,
const GIArgument *value) const GIArgument *value)
{ {
int offset; int offset;
@ -402,163 +402,163 @@ gi_field_info_set_field (GIFieldInfo *field_info,
if (!gi_type_info_is_pointer (type_info)) if (!gi_type_info_is_pointer (type_info))
{ {
switch (gi_type_info_get_tag (type_info)) switch (gi_type_info_get_tag (type_info))
{ {
case GI_TYPE_TAG_VOID: case GI_TYPE_TAG_VOID:
g_warning("Field %s: should not be have void type", g_warning("Field %s: should not be have void type",
gi_base_info_get_name ((GIBaseInfo *)field_info)); gi_base_info_get_name ((GIBaseInfo *)field_info));
break; break;
case GI_TYPE_TAG_BOOLEAN: case GI_TYPE_TAG_BOOLEAN:
G_STRUCT_MEMBER (gboolean, mem, offset) = value->v_boolean != FALSE; G_STRUCT_MEMBER (gboolean, mem, offset) = value->v_boolean != FALSE;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
G_STRUCT_MEMBER (guint8, mem, offset) = value->v_uint8; G_STRUCT_MEMBER (uint8_t, mem, offset) = value->v_uint8;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
G_STRUCT_MEMBER (guint16, mem, offset) = value->v_uint16; G_STRUCT_MEMBER (uint16_t, mem, offset) = value->v_uint16;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_UNICHAR: case GI_TYPE_TAG_UNICHAR:
G_STRUCT_MEMBER (guint32, mem, offset) = value->v_uint32; G_STRUCT_MEMBER (uint32_t, mem, offset) = value->v_uint32;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT64: case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64: case GI_TYPE_TAG_UINT64:
G_STRUCT_MEMBER (guint64, mem, offset) = value->v_uint64; G_STRUCT_MEMBER (uint64_t, mem, offset) = value->v_uint64;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_GTYPE: case GI_TYPE_TAG_GTYPE:
G_STRUCT_MEMBER (gsize, mem, offset) = value->v_size; G_STRUCT_MEMBER (size_t, mem, offset) = value->v_size;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_FLOAT: case GI_TYPE_TAG_FLOAT:
G_STRUCT_MEMBER (gfloat, mem, offset) = value->v_float; G_STRUCT_MEMBER (float, mem, offset) = value->v_float;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_DOUBLE: case GI_TYPE_TAG_DOUBLE:
G_STRUCT_MEMBER (gdouble, mem, offset)= value->v_double; G_STRUCT_MEMBER (double, mem, offset)= value->v_double;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_UTF8: case GI_TYPE_TAG_UTF8:
case GI_TYPE_TAG_FILENAME: case GI_TYPE_TAG_FILENAME:
case GI_TYPE_TAG_ARRAY: case GI_TYPE_TAG_ARRAY:
case GI_TYPE_TAG_GLIST: case GI_TYPE_TAG_GLIST:
case GI_TYPE_TAG_GSLIST: case GI_TYPE_TAG_GSLIST:
case GI_TYPE_TAG_GHASH: case GI_TYPE_TAG_GHASH:
g_warning("Field %s: type %s should have is_pointer set", g_warning("Field %s: type %s should have is_pointer set",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_type_tag_to_string (gi_type_info_get_tag (type_info))); gi_type_tag_to_string (gi_type_info_get_tag (type_info)));
break; break;
case GI_TYPE_TAG_ERROR: case GI_TYPE_TAG_ERROR:
/* Needs to be handled by the language binding directly */ /* Needs to be handled by the language binding directly */
break; break;
case GI_TYPE_TAG_INTERFACE: case GI_TYPE_TAG_INTERFACE:
{ {
GIBaseInfo *interface = gi_type_info_get_interface (type_info); GIBaseInfo *interface = gi_type_info_get_interface (type_info);
switch (gi_base_info_get_info_type (interface)) switch (gi_base_info_get_info_type (interface))
{ {
case GI_INFO_TYPE_STRUCT: case GI_INFO_TYPE_STRUCT:
case GI_INFO_TYPE_UNION: case GI_INFO_TYPE_UNION:
case GI_INFO_TYPE_BOXED: case GI_INFO_TYPE_BOXED:
/* Needs to be handled by the language binding directly */ /* Needs to be handled by the language binding directly */
break; break;
case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_OBJECT:
break; break;
case GI_INFO_TYPE_ENUM: case GI_INFO_TYPE_ENUM:
case GI_INFO_TYPE_FLAGS: case GI_INFO_TYPE_FLAGS:
{ {
/* See FIXME above /* See FIXME above
*/ */
GITypeTag storage_type = gi_enum_info_get_storage_type ((GIEnumInfo *)interface); GITypeTag storage_type = gi_enum_info_get_storage_type ((GIEnumInfo *)interface);
switch (storage_type) switch (storage_type)
{ {
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
G_STRUCT_MEMBER (guint8, mem, offset) = (guint8)value->v_int; G_STRUCT_MEMBER (uint8_t, mem, offset) = (uint8_t)value->v_int;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
G_STRUCT_MEMBER (guint16, mem, offset) = (guint16)value->v_int; G_STRUCT_MEMBER (uint16_t, mem, offset) = (uint16_t)value->v_int;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
G_STRUCT_MEMBER (guint32, mem, offset) = (guint32)value->v_int; G_STRUCT_MEMBER (uint32_t, mem, offset) = (uint32_t)value->v_int;
result = TRUE; result = TRUE;
break; break;
case GI_TYPE_TAG_INT64: case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64: case GI_TYPE_TAG_UINT64:
G_STRUCT_MEMBER (guint64, mem, offset) = (guint64)value->v_int; G_STRUCT_MEMBER (uint64_t, mem, offset) = (uint64_t)value->v_int;
result = TRUE; result = TRUE;
break; break;
default: default:
g_warning("Field %s: Unexpected enum storage type %s", g_warning("Field %s: Unexpected enum storage type %s",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_type_tag_to_string (storage_type)); gi_type_tag_to_string (storage_type));
break; break;
} }
break; break;
} }
break; break;
case GI_INFO_TYPE_VFUNC: case GI_INFO_TYPE_VFUNC:
case GI_INFO_TYPE_CALLBACK: case GI_INFO_TYPE_CALLBACK:
g_warning("Field%s: Interface type %d should have is_pointer set", g_warning("Field%s: Interface type %d should have is_pointer set",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_base_info_get_info_type (interface)); gi_base_info_get_info_type (interface));
break; break;
case GI_INFO_TYPE_INVALID: case GI_INFO_TYPE_INVALID:
case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_INTERFACE:
case GI_INFO_TYPE_FUNCTION: case GI_INFO_TYPE_FUNCTION:
case GI_INFO_TYPE_CONSTANT: case GI_INFO_TYPE_CONSTANT:
case GI_INFO_TYPE_VALUE: case GI_INFO_TYPE_VALUE:
case GI_INFO_TYPE_SIGNAL: case GI_INFO_TYPE_SIGNAL:
case GI_INFO_TYPE_PROPERTY: case GI_INFO_TYPE_PROPERTY:
case GI_INFO_TYPE_FIELD: case GI_INFO_TYPE_FIELD:
case GI_INFO_TYPE_ARG: case GI_INFO_TYPE_ARG:
case GI_INFO_TYPE_TYPE: case GI_INFO_TYPE_TYPE:
case GI_INFO_TYPE_UNRESOLVED: case GI_INFO_TYPE_UNRESOLVED:
g_warning("Field %s: Interface type %d not expected", g_warning("Field %s: Interface type %d not expected",
gi_base_info_get_name ((GIBaseInfo *)field_info), gi_base_info_get_name ((GIBaseInfo *)field_info),
gi_base_info_get_info_type (interface)); gi_base_info_get_info_type (interface));
break; break;
default: default:
break; break;
} }
gi_base_info_unref ((GIBaseInfo *)interface); gi_base_info_unref ((GIBaseInfo *)interface);
break; break;
} }
break; break;
default: default:
break; break;
} }
} else { } else {
switch (gi_type_info_get_tag (type_info)) switch (gi_type_info_get_tag (type_info))
{ {
case GI_TYPE_TAG_INTERFACE: case GI_TYPE_TAG_INTERFACE:
{ {
GIBaseInfo *interface = gi_type_info_get_interface (type_info); GIBaseInfo *interface = gi_type_info_get_interface (type_info);
switch (gi_base_info_get_info_type (interface)) switch (gi_base_info_get_info_type (interface))
{ {
case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_OBJECT:
case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_INTERFACE:
G_STRUCT_MEMBER (gpointer, mem, offset) = (gpointer)value->v_pointer; G_STRUCT_MEMBER (void *, mem, offset) = (void *)value->v_pointer;
result = TRUE; result = TRUE;
break; break;
default: default:
break; break;
} }
gi_base_info_unref ((GIBaseInfo *)interface); gi_base_info_unref ((GIBaseInfo *)interface);
} }
break; break;
default: default:
break; break;
} }
} }

View File

@ -48,22 +48,22 @@ GI_AVAILABLE_IN_ALL
GIFieldInfoFlags gi_field_info_get_flags (GIFieldInfo *info); GIFieldInfoFlags gi_field_info_get_flags (GIFieldInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_field_info_get_size (GIFieldInfo *info); size_t gi_field_info_get_size (GIFieldInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_field_info_get_offset (GIFieldInfo *info); size_t gi_field_info_get_offset (GIFieldInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypeInfo * gi_field_info_get_type_info (GIFieldInfo *info); GITypeInfo * gi_field_info_get_type_info (GIFieldInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_field_info_get_field (GIFieldInfo *field_info, gboolean gi_field_info_get_field (GIFieldInfo *field_info,
gpointer mem, void *mem,
GIArgument *value); GIArgument *value);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_field_info_set_field (GIFieldInfo *field_info, gboolean gi_field_info_set_field (GIFieldInfo *field_info,
gpointer mem, void *mem,
const GIArgument *value); const GIArgument *value);
G_END_DECLS G_END_DECLS

View File

@ -50,18 +50,18 @@
GIFunctionInfo * GIFunctionInfo *
gi_base_info_find_method (GIBaseInfo *base, gi_base_info_find_method (GIBaseInfo *base,
guint32 offset, uint32_t offset,
guint n_methods, uint16_t n_methods,
const gchar *name) const char *name)
{ {
/* FIXME hash */ /* FIXME hash */
GIRealInfo *rinfo = (GIRealInfo*)base; GIRealInfo *rinfo = (GIRealInfo*)base;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
for (guint i = 0; i < n_methods; i++) for (uint16_t i = 0; i < n_methods; i++)
{ {
FunctionBlob *fblob = (FunctionBlob *)&rinfo->typelib->data[offset]; FunctionBlob *fblob = (FunctionBlob *)&rinfo->typelib->data[offset];
const gchar *fname = (const gchar *)&rinfo->typelib->data[fblob->name]; const char *fname = (const char *)&rinfo->typelib->data[fblob->name];
if (strcmp (name, fname) == 0) if (strcmp (name, fname) == 0)
return (GIFunctionInfo *) gi_info_new (GI_INFO_TYPE_FUNCTION, base, return (GIFunctionInfo *) gi_info_new (GI_INFO_TYPE_FUNCTION, base,
@ -85,7 +85,7 @@ gi_base_info_find_method (GIBaseInfo *base,
* Returns: the symbol * Returns: the symbol
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_function_info_get_symbol (GIFunctionInfo *info) gi_function_info_get_symbol (GIFunctionInfo *info)
{ {
GIRealInfo *rinfo; GIRealInfo *rinfo;
@ -266,14 +266,14 @@ gi_invoke_error_quark (void)
gboolean gboolean
gi_function_info_invoke (GIFunctionInfo *info, gi_function_info_invoke (GIFunctionInfo *info,
const GIArgument *in_args, const GIArgument *in_args,
gsize n_in_args, size_t n_in_args,
GIArgument *out_args, GIArgument *out_args,
gsize n_out_args, size_t n_out_args,
GIArgument *return_value, GIArgument *return_value,
GError **error) GError **error)
{ {
const gchar *symbol; const char *symbol;
gpointer func; void *func;
symbol = gi_function_info_get_symbol (info); symbol = gi_function_info_get_symbol (info);

View File

@ -45,7 +45,7 @@ G_BEGIN_DECLS
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_function_info_get_symbol (GIFunctionInfo *info); const char * gi_function_info_get_symbol (GIFunctionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfoFlags gi_function_info_get_flags (GIFunctionInfo *info); GIFunctionInfoFlags gi_function_info_get_flags (GIFunctionInfo *info);
@ -92,9 +92,9 @@ typedef enum
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_function_info_invoke (GIFunctionInfo *info, gboolean gi_function_info_invoke (GIFunctionInfo *info,
const GIArgument *in_args, const GIArgument *in_args,
gsize n_in_args, size_t n_in_args,
GIArgument *out_args, GIArgument *out_args,
gsize n_out_args, size_t n_out_args,
GIArgument *return_value, GIArgument *return_value,
GError **error); GError **error);

View File

@ -55,7 +55,7 @@
* Returns: number of prerequisites * Returns: number of prerequisites
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_interface_info_get_n_prerequisites (GIInterfaceInfo *info) gi_interface_info_get_n_prerequisites (GIInterfaceInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -82,13 +82,14 @@ gi_interface_info_get_n_prerequisites (GIInterfaceInfo *info)
*/ */
GIBaseInfo * GIBaseInfo *
gi_interface_info_get_prerequisite (GIInterfaceInfo *info, gi_interface_info_get_prerequisite (GIInterfaceInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
InterfaceBlob *blob; InterfaceBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL); g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
@ -106,7 +107,7 @@ gi_interface_info_get_prerequisite (GIInterfaceInfo *info,
* Returns: number of properties * Returns: number of properties
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_interface_info_get_n_properties (GIInterfaceInfo *info) gi_interface_info_get_n_properties (GIInterfaceInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -133,15 +134,16 @@ gi_interface_info_get_n_properties (GIInterfaceInfo *info)
*/ */
GIPropertyInfo * GIPropertyInfo *
gi_interface_info_get_property (GIInterfaceInfo *info, gi_interface_info_get_property (GIInterfaceInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
InterfaceBlob *blob; InterfaceBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL); g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
@ -163,7 +165,7 @@ gi_interface_info_get_property (GIInterfaceInfo *info,
* Returns: number of methods * Returns: number of methods
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_interface_info_get_n_methods (GIInterfaceInfo *info) gi_interface_info_get_n_methods (GIInterfaceInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -190,15 +192,16 @@ gi_interface_info_get_n_methods (GIInterfaceInfo *info)
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_interface_info_get_method (GIInterfaceInfo *info, gi_interface_info_get_method (GIInterfaceInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
InterfaceBlob *blob; InterfaceBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL); g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
@ -228,9 +231,9 @@ gi_interface_info_get_method (GIInterfaceInfo *info,
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_interface_info_find_method (GIInterfaceInfo *info, gi_interface_info_find_method (GIInterfaceInfo *info,
const gchar *name) const char *name)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
@ -251,7 +254,7 @@ gi_interface_info_find_method (GIInterfaceInfo *info,
* Returns: number of signals * Returns: number of signals
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_interface_info_get_n_signals (GIInterfaceInfo *info) gi_interface_info_get_n_signals (GIInterfaceInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -278,15 +281,16 @@ gi_interface_info_get_n_signals (GIInterfaceInfo *info)
*/ */
GISignalInfo * GISignalInfo *
gi_interface_info_get_signal (GIInterfaceInfo *info, gi_interface_info_get_signal (GIInterfaceInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
InterfaceBlob *blob; InterfaceBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL); g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
@ -317,12 +321,12 @@ gi_interface_info_get_signal (GIInterfaceInfo *info,
*/ */
GISignalInfo * GISignalInfo *
gi_interface_info_find_signal (GIInterfaceInfo *info, gi_interface_info_find_signal (GIInterfaceInfo *info,
const gchar *name) const char *name)
{ {
guint n_signals; uint32_t n_signals;
n_signals = gi_interface_info_get_n_signals (info); n_signals = gi_interface_info_get_n_signals (info);
for (guint i = 0; i < n_signals; i++) for (uint32_t i = 0; i < n_signals; i++)
{ {
GISignalInfo *siginfo = gi_interface_info_get_signal (info, i); GISignalInfo *siginfo = gi_interface_info_get_signal (info, i);
@ -346,7 +350,7 @@ gi_interface_info_find_signal (GIInterfaceInfo *info,
* Returns: number of virtual functions * Returns: number of virtual functions
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_interface_info_get_n_vfuncs (GIInterfaceInfo *info) gi_interface_info_get_n_vfuncs (GIInterfaceInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -373,15 +377,16 @@ gi_interface_info_get_n_vfuncs (GIInterfaceInfo *info)
*/ */
GIVFuncInfo * GIVFuncInfo *
gi_interface_info_get_vfunc (GIInterfaceInfo *info, gi_interface_info_get_vfunc (GIInterfaceInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
InterfaceBlob *blob; InterfaceBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL); g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
@ -414,9 +419,9 @@ gi_interface_info_get_vfunc (GIInterfaceInfo *info,
*/ */
GIVFuncInfo * GIVFuncInfo *
gi_interface_info_find_vfunc (GIInterfaceInfo *info, gi_interface_info_find_vfunc (GIInterfaceInfo *info,
const gchar *name) const char *name)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
InterfaceBlob *blob; InterfaceBlob *blob;
@ -445,7 +450,7 @@ gi_interface_info_find_vfunc (GIInterfaceInfo *info,
* Returns: number of constants * Returns: number of constants
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_interface_info_get_n_constants (GIInterfaceInfo *info) gi_interface_info_get_n_constants (GIInterfaceInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -472,15 +477,16 @@ gi_interface_info_get_n_constants (GIInterfaceInfo *info)
*/ */
GIConstantInfo * GIConstantInfo *
gi_interface_info_get_constant (GIInterfaceInfo *info, gi_interface_info_get_constant (GIInterfaceInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
InterfaceBlob *blob; InterfaceBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL); g_return_val_if_fail (GI_IS_INTERFACE_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];

View File

@ -45,58 +45,58 @@ G_BEGIN_DECLS
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_interface_info_get_n_prerequisites (GIInterfaceInfo *info); unsigned int gi_interface_info_get_n_prerequisites (GIInterfaceInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIBaseInfo * gi_interface_info_get_prerequisite (GIInterfaceInfo *info, GIBaseInfo * gi_interface_info_get_prerequisite (GIInterfaceInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_interface_info_get_n_properties (GIInterfaceInfo *info); unsigned int gi_interface_info_get_n_properties (GIInterfaceInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIPropertyInfo * gi_interface_info_get_property (GIInterfaceInfo *info, GIPropertyInfo * gi_interface_info_get_property (GIInterfaceInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_interface_info_get_n_methods (GIInterfaceInfo *info); unsigned int gi_interface_info_get_n_methods (GIInterfaceInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_interface_info_get_method (GIInterfaceInfo *info, GIFunctionInfo * gi_interface_info_get_method (GIInterfaceInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_interface_info_find_method (GIInterfaceInfo *info, GIFunctionInfo * gi_interface_info_find_method (GIInterfaceInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_interface_info_get_n_signals (GIInterfaceInfo *info); unsigned int gi_interface_info_get_n_signals (GIInterfaceInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GISignalInfo * gi_interface_info_get_signal (GIInterfaceInfo *info, GISignalInfo * gi_interface_info_get_signal (GIInterfaceInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GISignalInfo * gi_interface_info_find_signal (GIInterfaceInfo *info, GISignalInfo * gi_interface_info_find_signal (GIInterfaceInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_interface_info_get_n_vfuncs (GIInterfaceInfo *info); unsigned int gi_interface_info_get_n_vfuncs (GIInterfaceInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIVFuncInfo * gi_interface_info_get_vfunc (GIInterfaceInfo *info, GIVFuncInfo * gi_interface_info_get_vfunc (GIInterfaceInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIVFuncInfo * gi_interface_info_find_vfunc (GIInterfaceInfo *info, GIVFuncInfo * gi_interface_info_find_vfunc (GIInterfaceInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_interface_info_get_n_constants (GIInterfaceInfo *info); unsigned int gi_interface_info_get_n_constants (GIInterfaceInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIConstantInfo * gi_interface_info_get_constant (GIInterfaceInfo *info, GIConstantInfo * gi_interface_info_get_constant (GIInterfaceInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL

View File

@ -44,7 +44,7 @@
* Since: 2.80 * Since: 2.80
*/ */
static ffi_type * static ffi_type *
value_to_ffi_type (const GValue *gvalue, gpointer *value) value_to_ffi_type (const GValue *gvalue, void **value)
{ {
ffi_type *rettype = NULL; ffi_type *rettype = NULL;
GType type = g_type_fundamental (G_VALUE_TYPE (gvalue)); GType type = g_type_fundamental (G_VALUE_TYPE (gvalue));
@ -56,12 +56,12 @@ value_to_ffi_type (const GValue *gvalue, gpointer *value)
case G_TYPE_CHAR: case G_TYPE_CHAR:
case G_TYPE_INT: case G_TYPE_INT:
rettype = &ffi_type_sint; rettype = &ffi_type_sint;
*value = (gpointer)&(gvalue->data[0].v_int); *value = (void *) &(gvalue->data[0].v_int);
break; break;
case G_TYPE_UCHAR: case G_TYPE_UCHAR:
case G_TYPE_UINT: case G_TYPE_UINT:
rettype = &ffi_type_uint; rettype = &ffi_type_uint;
*value = (gpointer)&(gvalue->data[0].v_uint); *value = (void *) &(gvalue->data[0].v_uint);
break; break;
case G_TYPE_STRING: case G_TYPE_STRING:
case G_TYPE_OBJECT: case G_TYPE_OBJECT:
@ -69,31 +69,31 @@ value_to_ffi_type (const GValue *gvalue, gpointer *value)
case G_TYPE_POINTER: case G_TYPE_POINTER:
case G_TYPE_PARAM: case G_TYPE_PARAM:
rettype = &ffi_type_pointer; rettype = &ffi_type_pointer;
*value = (gpointer)&(gvalue->data[0].v_pointer); *value = (void *) &(gvalue->data[0].v_pointer);
break; break;
case G_TYPE_FLOAT: case G_TYPE_FLOAT:
rettype = &ffi_type_float; rettype = &ffi_type_float;
*value = (gpointer)&(gvalue->data[0].v_float); *value = (void *) &(gvalue->data[0].v_float);
break; break;
case G_TYPE_DOUBLE: case G_TYPE_DOUBLE:
rettype = &ffi_type_double; rettype = &ffi_type_double;
*value = (gpointer)&(gvalue->data[0].v_double); *value = (void *) &(gvalue->data[0].v_double);
break; break;
case G_TYPE_LONG: case G_TYPE_LONG:
rettype = &ffi_type_slong; rettype = &ffi_type_slong;
*value = (gpointer)&(gvalue->data[0].v_long); *value = (void *) &(gvalue->data[0].v_long);
break; break;
case G_TYPE_ULONG: case G_TYPE_ULONG:
rettype = &ffi_type_ulong; rettype = &ffi_type_ulong;
*value = (gpointer)&(gvalue->data[0].v_ulong); *value = (void *) &(gvalue->data[0].v_ulong);
break; break;
case G_TYPE_INT64: case G_TYPE_INT64:
rettype = &ffi_type_sint64; rettype = &ffi_type_sint64;
*value = (gpointer)&(gvalue->data[0].v_int64); *value = (void *) &(gvalue->data[0].v_int64);
break; break;
case G_TYPE_UINT64: case G_TYPE_UINT64:
rettype = &ffi_type_uint64; rettype = &ffi_type_uint64;
*value = (gpointer)&(gvalue->data[0].v_uint64); *value = (void *) &(gvalue->data[0].v_uint64);
break; break;
default: default:
rettype = &ffi_type_pointer; rettype = &ffi_type_pointer;
@ -121,14 +121,14 @@ value_to_ffi_type (const GValue *gvalue, gpointer *value)
*/ */
static ffi_type * static ffi_type *
g_value_to_ffi_return_type (const GValue *gvalue, g_value_to_ffi_return_type (const GValue *gvalue,
const GIArgument *ffi_value, const GIArgument *ffi_value,
gpointer *value) void **value)
{ {
ffi_type *rettype = NULL; ffi_type *rettype = NULL;
GType type = g_type_fundamental (G_VALUE_TYPE (gvalue)); GType type = g_type_fundamental (G_VALUE_TYPE (gvalue));
g_assert (type != G_TYPE_INVALID); g_assert (type != G_TYPE_INVALID);
*value = (gpointer)&(ffi_value->v_long); *value = (void *) &(ffi_value->v_long);
switch (type) { switch (type) {
case G_TYPE_CHAR: case G_TYPE_CHAR:
@ -153,11 +153,11 @@ g_value_to_ffi_return_type (const GValue *gvalue,
break; break;
case G_TYPE_FLOAT: case G_TYPE_FLOAT:
rettype = &ffi_type_float; rettype = &ffi_type_float;
*value = (gpointer)&(ffi_value->v_float); *value = (void *) &(ffi_value->v_float);
break; break;
case G_TYPE_DOUBLE: case G_TYPE_DOUBLE:
rettype = &ffi_type_double; rettype = &ffi_type_double;
*value = (gpointer)&(ffi_value->v_double); *value = (void *) &(ffi_value->v_double);
break; break;
case G_TYPE_LONG: case G_TYPE_LONG:
rettype = &ffi_type_slong; rettype = &ffi_type_slong;
@ -167,11 +167,11 @@ g_value_to_ffi_return_type (const GValue *gvalue,
break; break;
case G_TYPE_INT64: case G_TYPE_INT64:
rettype = &ffi_type_sint64; rettype = &ffi_type_sint64;
*value = (gpointer)&(ffi_value->v_int64); *value = (void *) &(ffi_value->v_int64);
break; break;
case G_TYPE_UINT64: case G_TYPE_UINT64:
rettype = &ffi_type_uint64; rettype = &ffi_type_uint64;
*value = (gpointer)&(ffi_value->v_uint64); *value = (void *) &(ffi_value->v_uint64);
break; break;
default: default:
rettype = &ffi_type_pointer; rettype = &ffi_type_pointer;
@ -212,10 +212,10 @@ g_value_from_ffi_value (GValue *gvalue,
g_value_set_boolean (gvalue, (gboolean)value->v_long); g_value_set_boolean (gvalue, (gboolean)value->v_long);
break; break;
case G_TYPE_STRING: case G_TYPE_STRING:
g_value_set_string (gvalue, (gchar*)value->v_pointer); g_value_set_string (gvalue, (char*)value->v_pointer);
break; break;
case G_TYPE_CHAR: case G_TYPE_CHAR:
g_value_set_schar (gvalue, (gchar)value->v_long); g_value_set_schar (gvalue, (char)value->v_long);
break; break;
case G_TYPE_UCHAR: case G_TYPE_UCHAR:
g_value_set_uchar (gvalue, (guchar)value->v_ulong); g_value_set_uchar (gvalue, (guchar)value->v_ulong);
@ -246,7 +246,7 @@ g_value_from_ffi_value (GValue *gvalue,
break; break;
default: default:
g_warning ("Unsupported fundamental type: %s", g_warning ("Unsupported fundamental type: %s",
g_type_name (g_type_fundamental (G_VALUE_TYPE (gvalue)))); g_type_name (g_type_fundamental (G_VALUE_TYPE (gvalue))));
} }
} }
@ -270,10 +270,10 @@ g_value_from_ffi_value (GValue *gvalue,
void void
gi_cclosure_marshal_generic (GClosure *closure, gi_cclosure_marshal_generic (GClosure *closure,
GValue *return_gvalue, GValue *return_gvalue,
guint n_param_values, unsigned int n_param_values,
const GValue *param_values, const GValue *param_values,
gpointer invocation_hint, void *invocation_hint,
gpointer marshal_data) void *marshal_data)
{ {
GIArgument return_ffi_value = { 0, }; GIArgument return_ffi_value = { 0, };
ffi_type *rtype; ffi_type *rtype;
@ -288,7 +288,7 @@ gi_cclosure_marshal_generic (GClosure *closure,
if (return_gvalue && G_VALUE_TYPE (return_gvalue)) if (return_gvalue && G_VALUE_TYPE (return_gvalue))
{ {
rtype = g_value_to_ffi_return_type (return_gvalue, &return_ffi_value, rtype = g_value_to_ffi_return_type (return_gvalue, &return_ffi_value,
&rvalue); &rvalue);
} }
else else
{ {
@ -298,7 +298,7 @@ gi_cclosure_marshal_generic (GClosure *closure,
n_args = n_param_values + 1; n_args = n_param_values + 1;
atypes = g_alloca (sizeof (ffi_type *) * n_args); atypes = g_alloca (sizeof (ffi_type *) * n_args);
args = g_alloca (sizeof (gpointer) * n_args); args = g_alloca (sizeof (void *) * n_args);
if (n_param_values > 0) if (n_param_values > 0)
{ {

View File

@ -59,20 +59,20 @@
* Returns: field offset, in bytes * Returns: field offset, in bytes
* Since: 2.80 * Since: 2.80
*/ */
static gint32 static size_t
gi_object_info_get_field_offset (GIObjectInfo *info, gi_object_info_get_field_offset (GIObjectInfo *info,
guint n) size_t n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
guint32 offset; uint32_t offset;
FieldBlob *field_blob; FieldBlob *field_blob;
offset = rinfo->offset + header->object_blob_size offset = rinfo->offset + header->object_blob_size
+ (blob->n_interfaces + blob->n_interfaces % 2) * 2; + (blob->n_interfaces + blob->n_interfaces % 2) * 2;
for (guint i = 0; i < n; i++) for (size_t i = 0; i < n; i++)
{ {
field_blob = (FieldBlob *)&rinfo->typelib->data[offset]; field_blob = (FieldBlob *)&rinfo->typelib->data[offset];
offset += header->field_blob_size; offset += header->field_blob_size;
@ -194,7 +194,7 @@ gi_object_info_get_fundamental (GIObjectInfo *info)
* Returns: name of the objects type * Returns: name of the objects type
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_object_info_get_type_name (GIObjectInfo *info) gi_object_info_get_type_name (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -218,7 +218,7 @@ gi_object_info_get_type_name (GIObjectInfo *info)
* Returns: the type init function name * Returns: the type init function name
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_object_info_get_type_init_function_name (GIObjectInfo *info) gi_object_info_get_type_init_function_name (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -241,7 +241,7 @@ gi_object_info_get_type_init_function_name (GIObjectInfo *info)
* Returns: number of interfaces * Returns: number of interfaces
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_interfaces (GIObjectInfo *info) gi_object_info_get_n_interfaces (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -268,13 +268,14 @@ gi_object_info_get_n_interfaces (GIObjectInfo *info)
*/ */
GIInterfaceInfo * GIInterfaceInfo *
gi_object_info_get_interface (GIObjectInfo *info, gi_object_info_get_interface (GIObjectInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
ObjectBlob *blob; ObjectBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
@ -291,7 +292,7 @@ gi_object_info_get_interface (GIObjectInfo *info,
* Returns: number of fields * Returns: number of fields
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_fields (GIObjectInfo *info) gi_object_info_get_n_fields (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -318,13 +319,14 @@ gi_object_info_get_n_fields (GIObjectInfo *info)
*/ */
GIFieldInfo * GIFieldInfo *
gi_object_info_get_field (GIObjectInfo *info, gi_object_info_get_field (GIObjectInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
offset = gi_object_info_get_field_offset(info, n); offset = gi_object_info_get_field_offset(info, n);
@ -340,7 +342,7 @@ gi_object_info_get_field (GIObjectInfo *info,
* Returns: number of properties * Returns: number of properties
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_properties (GIObjectInfo *info) gi_object_info_get_n_properties (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -366,15 +368,16 @@ gi_object_info_get_n_properties (GIObjectInfo *info)
*/ */
GIPropertyInfo * GIPropertyInfo *
gi_object_info_get_property (GIObjectInfo *info, gi_object_info_get_property (GIObjectInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
@ -398,7 +401,7 @@ gi_object_info_get_property (GIObjectInfo *info,
* Returns: number of methods * Returns: number of methods
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_methods (GIObjectInfo *info) gi_object_info_get_n_methods (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -425,15 +428,16 @@ gi_object_info_get_n_methods (GIObjectInfo *info)
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_object_info_get_method (GIObjectInfo *info, gi_object_info_get_method (GIObjectInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
@ -466,9 +470,9 @@ gi_object_info_get_method (GIObjectInfo *info,
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_object_info_find_method (GIObjectInfo *info, gi_object_info_find_method (GIObjectInfo *info,
const gchar *name) const char *name)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
@ -511,7 +515,7 @@ gi_object_info_find_method (GIObjectInfo *info,
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_object_info_find_method_using_interfaces (GIObjectInfo *info, gi_object_info_find_method_using_interfaces (GIObjectInfo *info,
const gchar *name, const char *name,
GIObjectInfo **implementor) GIObjectInfo **implementor)
{ {
GIFunctionInfo *result = NULL; GIFunctionInfo *result = NULL;
@ -528,20 +532,20 @@ gi_object_info_find_method_using_interfaces (GIObjectInfo *info,
n_interfaces = gi_object_info_get_n_interfaces (info); n_interfaces = gi_object_info_get_n_interfaces (info);
for (i = 0; i < n_interfaces; ++i) for (i = 0; i < n_interfaces; ++i)
{ {
GIInterfaceInfo *iface_info; GIInterfaceInfo *iface_info;
iface_info = gi_object_info_get_interface (info, i); iface_info = gi_object_info_get_interface (info, i);
result = gi_interface_info_find_method (iface_info, name); result = gi_interface_info_find_method (iface_info, name);
if (result != NULL) if (result != NULL)
{ {
implementor_result = (GIObjectInfo *) iface_info; implementor_result = (GIObjectInfo *) iface_info;
break; break;
} }
gi_base_info_unref ((GIBaseInfo*) iface_info); gi_base_info_unref ((GIBaseInfo*) iface_info);
} }
} }
if (implementor) if (implementor)
*implementor = implementor_result; *implementor = implementor_result;
@ -559,7 +563,7 @@ gi_object_info_find_method_using_interfaces (GIObjectInfo *info,
* Returns: number of signals * Returns: number of signals
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_signals (GIObjectInfo *info) gi_object_info_get_n_signals (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -586,15 +590,16 @@ gi_object_info_get_n_signals (GIObjectInfo *info)
*/ */
GISignalInfo * GISignalInfo *
gi_object_info_get_signal (GIObjectInfo *info, gi_object_info_get_signal (GIObjectInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
@ -627,20 +632,20 @@ gi_object_info_get_signal (GIObjectInfo *info,
*/ */
GISignalInfo * GISignalInfo *
gi_object_info_find_signal (GIObjectInfo *info, gi_object_info_find_signal (GIObjectInfo *info,
const gchar *name) const char *name)
{ {
guint n_signals; size_t n_signals;
n_signals = gi_object_info_get_n_signals (info); n_signals = gi_object_info_get_n_signals (info);
for (guint i = 0; i < n_signals; i++) for (size_t i = 0; i < n_signals; i++)
{ {
GISignalInfo *siginfo = gi_object_info_get_signal (info, i); GISignalInfo *siginfo = gi_object_info_get_signal (info, i);
if (g_strcmp0 (gi_base_info_get_name ((GIBaseInfo *) siginfo), name) != 0) if (g_strcmp0 (gi_base_info_get_name ((GIBaseInfo *) siginfo), name) != 0)
{ {
gi_base_info_unref ((GIBaseInfo*)siginfo); gi_base_info_unref ((GIBaseInfo*)siginfo);
continue; continue;
} }
return siginfo; return siginfo;
} }
@ -657,7 +662,7 @@ gi_object_info_find_signal (GIObjectInfo *info,
* Returns: number of virtual functions * Returns: number of virtual functions
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_vfuncs (GIObjectInfo *info) gi_object_info_get_n_vfuncs (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -684,15 +689,16 @@ gi_object_info_get_n_vfuncs (GIObjectInfo *info)
*/ */
GIVFuncInfo * GIVFuncInfo *
gi_object_info_get_vfunc (GIObjectInfo *info, gi_object_info_get_vfunc (GIObjectInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
@ -732,9 +738,9 @@ gi_object_info_get_vfunc (GIObjectInfo *info,
*/ */
GIVFuncInfo * GIVFuncInfo *
gi_object_info_find_vfunc (GIObjectInfo *info, gi_object_info_find_vfunc (GIObjectInfo *info,
const gchar *name) const char *name)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
@ -784,7 +790,7 @@ gi_object_info_find_vfunc (GIObjectInfo *info,
*/ */
GIVFuncInfo * GIVFuncInfo *
gi_object_info_find_vfunc_using_interfaces (GIObjectInfo *info, gi_object_info_find_vfunc_using_interfaces (GIObjectInfo *info,
const gchar *name, const char *name,
GIObjectInfo **implementor) GIObjectInfo **implementor)
{ {
GIVFuncInfo *result = NULL; GIVFuncInfo *result = NULL;
@ -801,20 +807,20 @@ gi_object_info_find_vfunc_using_interfaces (GIObjectInfo *info,
n_interfaces = gi_object_info_get_n_interfaces (info); n_interfaces = gi_object_info_get_n_interfaces (info);
for (i = 0; i < n_interfaces; ++i) for (i = 0; i < n_interfaces; ++i)
{ {
GIInterfaceInfo *iface_info; GIInterfaceInfo *iface_info;
iface_info = gi_object_info_get_interface (info, i); iface_info = gi_object_info_get_interface (info, i);
result = gi_interface_info_find_vfunc (iface_info, name); result = gi_interface_info_find_vfunc (iface_info, name);
if (result != NULL) if (result != NULL)
{ {
implementor_result = (GIObjectInfo *) iface_info; implementor_result = (GIObjectInfo *) iface_info;
break; break;
} }
gi_base_info_unref ((GIBaseInfo*) iface_info); gi_base_info_unref ((GIBaseInfo*) iface_info);
} }
} }
if (implementor) if (implementor)
*implementor = implementor_result; *implementor = implementor_result;
@ -832,7 +838,7 @@ gi_object_info_find_vfunc_using_interfaces (GIObjectInfo *info,
* Returns: number of constants * Returns: number of constants
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_object_info_get_n_constants (GIObjectInfo *info) gi_object_info_get_n_constants (GIObjectInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -859,15 +865,16 @@ gi_object_info_get_n_constants (GIObjectInfo *info)
*/ */
GIConstantInfo * GIConstantInfo *
gi_object_info_get_constant (GIObjectInfo *info, gi_object_info_get_constant (GIObjectInfo *info,
guint n) unsigned int n)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header; Header *header;
ObjectBlob *blob; ObjectBlob *blob;
g_return_val_if_fail (info != NULL, NULL); g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL); g_return_val_if_fail (GI_IS_OBJECT_INFO (info), NULL);
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
header = (Header *)rinfo->typelib->data; header = (Header *)rinfo->typelib->data;
blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset]; blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
@ -925,7 +932,7 @@ _get_func(GIObjectInfo *info,
const char* symbol; const char* symbol;
GSList *parents = NULL, *l; GSList *parents = NULL, *l;
GIObjectInfo *parent_info; GIObjectInfo *parent_info;
gpointer func = NULL; void *func = NULL;
parent_info = (GIObjectInfo *) gi_base_info_ref ((GIBaseInfo *) info); parent_info = (GIObjectInfo *) gi_base_info_ref ((GIBaseInfo *) info);
while (parent_info != NULL) while (parent_info != NULL)

View File

@ -88,10 +88,10 @@ typedef void * (*GIObjectInfoGetValueFunction) (const GValue *value);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_object_info_get_type_name (GIObjectInfo *info); const char * gi_object_info_get_type_name (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_object_info_get_type_init_function_name (GIObjectInfo *info); const char * gi_object_info_get_type_init_function_name (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_object_info_get_abstract (GIObjectInfo *info); gboolean gi_object_info_get_abstract (GIObjectInfo *info);
@ -106,79 +106,79 @@ GI_AVAILABLE_IN_ALL
GIObjectInfo * gi_object_info_get_parent (GIObjectInfo *info); GIObjectInfo * gi_object_info_get_parent (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_interfaces (GIObjectInfo *info); unsigned int gi_object_info_get_n_interfaces (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIInterfaceInfo * gi_object_info_get_interface (GIObjectInfo *info, GIInterfaceInfo * gi_object_info_get_interface (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_fields (GIObjectInfo *info); unsigned int gi_object_info_get_n_fields (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFieldInfo * gi_object_info_get_field (GIObjectInfo *info, GIFieldInfo * gi_object_info_get_field (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_properties (GIObjectInfo *info); unsigned int gi_object_info_get_n_properties (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIPropertyInfo * gi_object_info_get_property (GIObjectInfo *info, GIPropertyInfo * gi_object_info_get_property (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_methods (GIObjectInfo *info); unsigned int gi_object_info_get_n_methods (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_object_info_get_method (GIObjectInfo *info, GIFunctionInfo * gi_object_info_get_method (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_object_info_find_method (GIObjectInfo *info, GIFunctionInfo * gi_object_info_find_method (GIObjectInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_object_info_find_method_using_interfaces (GIObjectInfo *info, GIFunctionInfo * gi_object_info_find_method_using_interfaces (GIObjectInfo *info,
const gchar *name, const char *name,
GIObjectInfo **implementor); GIObjectInfo **implementor);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_signals (GIObjectInfo *info); unsigned int gi_object_info_get_n_signals (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GISignalInfo * gi_object_info_get_signal (GIObjectInfo *info, GISignalInfo * gi_object_info_get_signal (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GISignalInfo * gi_object_info_find_signal (GIObjectInfo *info, GISignalInfo * gi_object_info_find_signal (GIObjectInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_vfuncs (GIObjectInfo *info); unsigned int gi_object_info_get_n_vfuncs (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIVFuncInfo * gi_object_info_get_vfunc (GIObjectInfo *info, GIVFuncInfo * gi_object_info_get_vfunc (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIVFuncInfo * gi_object_info_find_vfunc (GIObjectInfo *info, GIVFuncInfo * gi_object_info_find_vfunc (GIObjectInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIVFuncInfo * gi_object_info_find_vfunc_using_interfaces (GIObjectInfo *info, GIVFuncInfo * gi_object_info_find_vfunc_using_interfaces (GIObjectInfo *info,
const gchar *name, const char *name,
GIObjectInfo **implementor); GIObjectInfo **implementor);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_object_info_get_n_constants (GIObjectInfo *info); unsigned int gi_object_info_get_n_constants (GIObjectInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIConstantInfo * gi_object_info_get_constant (GIObjectInfo *info, GIConstantInfo * gi_object_info_get_constant (GIObjectInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIStructInfo * gi_object_info_get_class_struct (GIObjectInfo *info); GIStructInfo * gi_object_info_get_class_struct (GIObjectInfo *info);

View File

@ -65,7 +65,7 @@
* Returns: (nullable): the type name, or `NULL` if unknown * Returns: (nullable): the type name, or `NULL` if unknown
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_registered_type_info_get_type_name (GIRegisteredTypeInfo *info) gi_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -97,7 +97,7 @@ gi_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
* passing into [method@GModule.Module.symbol], or `NULL` if unknown * passing into [method@GModule.Module.symbol], or `NULL` if unknown
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_registered_type_info_get_type_init_function_name (GIRegisteredTypeInfo *info) gi_registered_type_info_get_type_init_function_name (GIRegisteredTypeInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;

View File

@ -53,10 +53,10 @@ G_BEGIN_DECLS
(gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_BOXED)) (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_BOXED))
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_registered_type_info_get_type_name (GIRegisteredTypeInfo *info); const char * gi_registered_type_info_get_type_name (GIRegisteredTypeInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_registered_type_info_get_type_init_function_name (GIRegisteredTypeInfo *info); const char * gi_registered_type_info_get_type_init_function_name (GIRegisteredTypeInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GType gi_registered_type_info_get_g_type (GIRegisteredTypeInfo *info); GType gi_registered_type_info_get_g_type (GIRegisteredTypeInfo *info);

View File

@ -36,11 +36,6 @@
* be removed. */ * be removed. */
typedef struct _GIBaseInfo GIRealInfo; typedef struct _GIBaseInfo GIRealInfo;
/* We changed a gint32 -> gint in the structure below, which should be
* valid everywhere we care about.
*/
G_STATIC_ASSERT (sizeof (int) == sizeof (gint32));
/* /*
* We just use one structure for all of the info object * We just use one structure for all of the info object
* types; in general, we should be reading data directly * types; in general, we should be reading data directly
@ -57,9 +52,9 @@ struct _GIBaseInfo
GIBaseInfo *container; GIBaseInfo *container;
GITypelib *typelib; GITypelib *typelib;
guint32 offset; uint32_t offset;
guint32 type_is_embedded : 1; /* Used by GITypeInfo */ uint32_t type_is_embedded : 1; /* Used by GITypeInfo */
}; };
/* Subtypes */ /* Subtypes */
@ -203,8 +198,8 @@ struct _GIUnresolvedInfo
{ {
GIBaseInfo parent; GIBaseInfo parent;
const gchar *name; const char *name;
const gchar *namespace; const char *namespace;
}; };
void gi_unresolved_info_class_init (gpointer g_class, void gi_unresolved_info_class_init (gpointer g_class,
@ -215,33 +210,33 @@ void gi_info_init (GIRealInfo *info,
GIRepository *repository, GIRepository *repository,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset); uint32_t offset);
GIBaseInfo * gi_info_from_entry (GIRepository *repository, GIBaseInfo * gi_info_from_entry (GIRepository *repository,
GITypelib *typelib, GITypelib *typelib,
guint16 index); uint16_t index);
GIBaseInfo * gi_info_new_full (GIInfoType type, GIBaseInfo * gi_info_new_full (GIInfoType type,
GIRepository *repository, GIRepository *repository,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset); uint32_t offset);
GITypeInfo * gi_type_info_new (GIBaseInfo *container, GITypeInfo * gi_type_info_new (GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset); uint32_t offset);
void gi_type_info_init (GIBaseInfo *info, void gi_type_info_init (GIBaseInfo *info,
GIBaseInfo *container, GIBaseInfo *container,
GITypelib *typelib, GITypelib *typelib,
guint32 offset); uint32_t offset);
GIFunctionInfo * gi_base_info_find_method (GIBaseInfo *base, GIFunctionInfo * gi_base_info_find_method (GIBaseInfo *base,
guint32 offset, uint32_t offset,
guint n_methods, uint16_t n_methods,
const gchar *name); const char *name);
GIVFuncInfo * gi_base_info_find_vfunc (GIRealInfo *rinfo, GIVFuncInfo * gi_base_info_find_vfunc (GIRealInfo *rinfo,
guint32 offset, uint32_t offset,
guint n_vfuncs, uint16_t n_vfuncs,
const gchar *name); const char *name);

View File

@ -69,7 +69,7 @@ static GIRepository *default_repository = NULL;
static GPtrArray *typelib_search_path = NULL; static GPtrArray *typelib_search_path = NULL;
typedef struct { typedef struct {
guint n_interfaces; size_t n_interfaces;
GIBaseInfo *interfaces[]; GIBaseInfo *interfaces[];
} GTypeInterfaceCache; } GTypeInterfaceCache;
@ -77,9 +77,8 @@ static void
gtype_interface_cache_free (gpointer data) gtype_interface_cache_free (gpointer data)
{ {
GTypeInterfaceCache *cache = data; GTypeInterfaceCache *cache = data;
guint i;
for (i = 0; i < cache->n_interfaces; i++) for (size_t i = 0; i < cache->n_interfaces; i++)
gi_base_info_unref ((GIBaseInfo*) cache->interfaces[i]); gi_base_info_unref ((GIBaseInfo*) cache->interfaces[i]);
g_free (cache); g_free (cache);
} }
@ -111,8 +110,8 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
BOOL WINAPI BOOL WINAPI
DllMain (HINSTANCE hinstDLL, DllMain (HINSTANCE hinstDLL,
DWORD fdwReason, DWORD fdwReason,
LPVOID lpvReserved) LPVOID lpvReserved)
{ {
if (fdwReason == DLL_PROCESS_ATTACH) if (fdwReason == DLL_PROCESS_ATTACH)
girepository_dll = hinstDLL; girepository_dll = hinstDLL;
@ -129,8 +128,8 @@ DllMain (HINSTANCE hinstDLL,
*/ */
#define GOBJECT_INTROSPECTION_LIBDIR \ #define GOBJECT_INTROSPECTION_LIBDIR \
g_build_filename (g_win32_get_package_installation_directory_of_module (girepository_dll), \ g_build_filename (g_win32_get_package_installation_directory_of_module (girepository_dll), \
"lib", \ "lib", \
NULL) NULL)
#endif #endif
@ -140,8 +139,8 @@ gi_repository_init (GIRepository *repository)
repository->priv = gi_repository_get_instance_private (repository); repository->priv = gi_repository_get_instance_private (repository);
repository->priv->typelibs repository->priv->typelibs
= g_hash_table_new_full (g_str_hash, g_str_equal, = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) g_free, (GDestroyNotify) g_free,
(GDestroyNotify) gi_typelib_free); (GDestroyNotify) gi_typelib_free);
repository->priv->lazy_typelibs repository->priv->lazy_typelibs
= g_hash_table_new_full (g_str_hash, g_str_equal, = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) g_free, (GDestroyNotify) g_free,
@ -203,7 +202,7 @@ init_globals (void)
{ {
const char *libdir; const char *libdir;
char *typelib_dir; char *typelib_dir;
const gchar *type_lib_path_env; const char *type_lib_path_env;
/* This variable is intended to take precedence over both: /* This variable is intended to take precedence over both:
* - the default search path; * - the default search path;
@ -213,7 +212,7 @@ init_globals (void)
if (type_lib_path_env) if (type_lib_path_env)
{ {
gchar **custom_dirs; char **custom_dirs;
custom_dirs = g_strsplit (type_lib_path_env, G_SEARCHPATH_SEPARATOR_S, 0); custom_dirs = g_strsplit (type_lib_path_env, G_SEARCHPATH_SEPARATOR_S, 0);
typelib_search_path = typelib_search_path =
@ -324,9 +323,9 @@ get_repository (GIRepository *repository)
static GITypelib * static GITypelib *
check_version_conflict (GITypelib *typelib, check_version_conflict (GITypelib *typelib,
const gchar *namespace, const char *namespace,
const gchar *expected_version, const char *expected_version,
char **version_conflict) char **version_conflict)
{ {
Header *header; Header *header;
const char *loaded_version; const char *loaded_version;
@ -334,7 +333,7 @@ check_version_conflict (GITypelib *typelib,
if (expected_version == NULL) if (expected_version == NULL)
{ {
if (version_conflict) if (version_conflict)
*version_conflict = NULL; *version_conflict = NULL;
return typelib; return typelib;
} }
@ -345,7 +344,7 @@ check_version_conflict (GITypelib *typelib,
if (strcmp (expected_version, loaded_version) != 0) if (strcmp (expected_version, loaded_version) != 0)
{ {
if (version_conflict) if (version_conflict)
*version_conflict = (char*)loaded_version; *version_conflict = (char*)loaded_version;
return NULL; return NULL;
} }
if (version_conflict) if (version_conflict)
@ -355,11 +354,11 @@ check_version_conflict (GITypelib *typelib,
static GITypelib * static GITypelib *
get_registered_status (GIRepository *repository, get_registered_status (GIRepository *repository,
const char *namespace, const char *namespace,
const char *version, const char *version,
gboolean allow_lazy, gboolean allow_lazy,
gboolean *lazy_status, gboolean *lazy_status,
char **version_conflict) char **version_conflict)
{ {
GITypelib *typelib; GITypelib *typelib;
repository = get_repository (repository); repository = get_repository (repository);
@ -380,16 +379,16 @@ get_registered_status (GIRepository *repository,
static GITypelib * static GITypelib *
get_registered (GIRepository *repository, get_registered (GIRepository *repository,
const char *namespace, const char *namespace,
const char *version) const char *version)
{ {
return get_registered_status (repository, namespace, version, TRUE, NULL, NULL); return get_registered_status (repository, namespace, version, TRUE, NULL, NULL);
} }
static gboolean static gboolean
load_dependencies_recurse (GIRepository *repository, load_dependencies_recurse (GIRepository *repository,
GITypelib *typelib, GITypelib *typelib,
GError **error) GError **error)
{ {
char **dependencies; char **dependencies;
@ -400,25 +399,25 @@ load_dependencies_recurse (GIRepository *repository,
int i; int i;
for (i = 0; dependencies[i]; i++) for (i = 0; dependencies[i]; i++)
{ {
char *dependency = dependencies[i]; char *dependency = dependencies[i];
const char *last_dash; const char *last_dash;
char *dependency_namespace; char *dependency_namespace;
const char *dependency_version; const char *dependency_version;
last_dash = strrchr (dependency, '-'); last_dash = strrchr (dependency, '-');
dependency_namespace = g_strndup (dependency, last_dash - dependency); dependency_namespace = g_strndup (dependency, last_dash - dependency);
dependency_version = last_dash+1; dependency_version = last_dash+1;
if (!gi_repository_require (repository, dependency_namespace, dependency_version, if (!gi_repository_require (repository, dependency_namespace, dependency_version,
0, error)) 0, error))
{ {
g_free (dependency_namespace); g_free (dependency_namespace);
g_strfreev (dependencies); g_strfreev (dependencies);
return FALSE; return FALSE;
} }
g_free (dependency_namespace); g_free (dependency_namespace);
} }
g_strfreev (dependencies); g_strfreev (dependencies);
} }
return TRUE; return TRUE;
@ -426,13 +425,13 @@ load_dependencies_recurse (GIRepository *repository,
static const char * static const char *
register_internal (GIRepository *repository, register_internal (GIRepository *repository,
const char *source, const char *source,
gboolean lazy, gboolean lazy,
GITypelib *typelib, GITypelib *typelib,
GError **error) GError **error)
{ {
Header *header; Header *header;
const gchar *namespace; const char *namespace;
g_return_val_if_fail (typelib != NULL, FALSE); g_return_val_if_fail (typelib != NULL, FALSE);
@ -445,9 +444,9 @@ register_internal (GIRepository *repository,
if (lazy) if (lazy)
{ {
g_assert (!g_hash_table_lookup (repository->priv->lazy_typelibs, g_assert (!g_hash_table_lookup (repository->priv->lazy_typelibs,
namespace)); namespace));
g_hash_table_insert (repository->priv->lazy_typelibs, g_hash_table_insert (repository->priv->lazy_typelibs,
build_typelib_key (namespace, source), (void *)typelib); build_typelib_key (namespace, source), (void *)typelib);
} }
else else
{ {
@ -456,15 +455,15 @@ register_internal (GIRepository *repository,
/* First, try loading all the dependencies */ /* First, try loading all the dependencies */
if (!load_dependencies_recurse (repository, typelib, error)) if (!load_dependencies_recurse (repository, typelib, error))
return NULL; return NULL;
/* Check if we are transitioning from lazily loaded state */ /* Check if we are transitioning from lazily loaded state */
if (g_hash_table_lookup_extended (repository->priv->lazy_typelibs, if (g_hash_table_lookup_extended (repository->priv->lazy_typelibs,
namespace, namespace,
(gpointer)&key, &value)) (gpointer)&key, &value))
g_hash_table_remove (repository->priv->lazy_typelibs, key); g_hash_table_remove (repository->priv->lazy_typelibs, key);
else else
key = build_typelib_key (namespace, source); key = build_typelib_key (namespace, source);
g_hash_table_insert (repository->priv->typelibs, g_hash_table_insert (repository->priv->typelibs,
g_steal_pointer (&key), g_steal_pointer (&key),
@ -502,7 +501,7 @@ gi_repository_get_immediate_dependencies (GIRepository *repository,
const char *namespace) const char *namespace)
{ {
GITypelib *typelib; GITypelib *typelib;
gchar **deps; char **deps;
g_return_val_if_fail (namespace != NULL, NULL); g_return_val_if_fail (namespace != NULL, NULL);
@ -528,16 +527,15 @@ get_typelib_dependencies_transitive (GIRepository *repository,
GITypelib *typelib, GITypelib *typelib,
GHashTable *transitive_dependencies) GHashTable *transitive_dependencies)
{ {
gchar **immediate_dependencies; char **immediate_dependencies;
guint i;
immediate_dependencies = get_typelib_dependencies (typelib); immediate_dependencies = get_typelib_dependencies (typelib);
for (i = 0; immediate_dependencies != NULL && immediate_dependencies[i]; i++) for (size_t i = 0; immediate_dependencies != NULL && immediate_dependencies[i]; i++)
{ {
gchar *dependency; char *dependency;
const gchar *last_dash; const char *last_dash;
gchar *dependency_namespace; char *dependency_namespace;
dependency = immediate_dependencies[i]; dependency = immediate_dependencies[i];
@ -584,12 +582,12 @@ get_typelib_dependencies_transitive (GIRepository *repository,
*/ */
char ** char **
gi_repository_get_dependencies (GIRepository *repository, gi_repository_get_dependencies (GIRepository *repository,
const char *namespace) const char *namespace)
{ {
GITypelib *typelib; GITypelib *typelib;
GHashTable *transitive_dependencies; /* set of owned utf8 */ GHashTable *transitive_dependencies; /* set of owned utf8 */
GHashTableIter iter; GHashTableIter iter;
gchar *dependency; char *dependency;
GPtrArray *out; /* owned utf8 elements */ GPtrArray *out; /* owned utf8 elements */
g_return_val_if_fail (namespace != NULL, NULL); g_return_val_if_fail (namespace != NULL, NULL);
@ -618,7 +616,7 @@ gi_repository_get_dependencies (GIRepository *repository,
g_hash_table_unref (transitive_dependencies); g_hash_table_unref (transitive_dependencies);
return (gchar **) g_ptr_array_free (out, FALSE); return (char **) g_ptr_array_free (out, FALSE);
} }
/** /**
@ -635,10 +633,10 @@ gi_repository_get_dependencies (GIRepository *repository,
* Since: 2.80 * Since: 2.80
*/ */
const char * const char *
gi_repository_load_typelib (GIRepository *repository, gi_repository_load_typelib (GIRepository *repository,
GITypelib *typelib, GITypelib *typelib,
GIRepositoryLoadFlags flags, GIRepositoryLoadFlags flags,
GError **error) GError **error)
{ {
Header *header; Header *header;
const char *namespace; const char *namespace;
@ -654,20 +652,20 @@ gi_repository_load_typelib (GIRepository *repository,
nsversion = gi_typelib_get_string (typelib, header->nsversion); nsversion = gi_typelib_get_string (typelib, header->nsversion);
if (get_registered_status (repository, namespace, nsversion, allow_lazy, if (get_registered_status (repository, namespace, nsversion, allow_lazy,
&is_lazy, &version_conflict)) &is_lazy, &version_conflict))
{ {
if (version_conflict != NULL) if (version_conflict != NULL)
{ {
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT, GI_REPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT,
"Attempting to load namespace '%s', version '%s', but '%s' is already loaded", "Attempting to load namespace '%s', version '%s', but '%s' is already loaded",
namespace, nsversion, version_conflict); namespace, nsversion, version_conflict);
return NULL; return NULL;
} }
return namespace; return namespace;
} }
return register_internal (repository, "<builtin>", return register_internal (repository, "<builtin>",
allow_lazy, typelib, error); allow_lazy, typelib, error);
} }
/** /**
@ -691,8 +689,8 @@ gi_repository_load_typelib (GIRepository *repository,
*/ */
gboolean gboolean
gi_repository_is_registered (GIRepository *repository, gi_repository_is_registered (GIRepository *repository,
const gchar *namespace, const char *namespace,
const gchar *version) const char *version)
{ {
repository = get_repository (repository); repository = get_repository (repository);
return get_registered (repository, namespace, version) != NULL; return get_registered (repository, namespace, version) != NULL;
@ -753,12 +751,12 @@ gi_repository_new (void)
* Returns: number of metadata entries * Returns: number of metadata entries
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_repository_get_n_infos (GIRepository *repository, gi_repository_get_n_infos (GIRepository *repository,
const gchar *namespace) const char *namespace)
{ {
GITypelib *typelib; GITypelib *typelib;
guint n_interfaces = 0; unsigned int n_interfaces = 0;
g_return_val_if_fail (namespace != NULL, -1); g_return_val_if_fail (namespace != NULL, -1);
@ -793,13 +791,14 @@ gi_repository_get_n_infos (GIRepository *repository,
*/ */
GIBaseInfo * GIBaseInfo *
gi_repository_get_info (GIRepository *repository, gi_repository_get_info (GIRepository *repository,
const gchar *namespace, const char *namespace,
guint idx) unsigned int idx)
{ {
GITypelib *typelib; GITypelib *typelib;
DirEntry *entry; DirEntry *entry;
g_return_val_if_fail (namespace != NULL, NULL); g_return_val_if_fail (namespace != NULL, NULL);
g_return_val_if_fail (idx < G_MAXUINT16, NULL);
repository = get_repository (repository); repository = get_repository (repository);
@ -816,7 +815,7 @@ gi_repository_get_info (GIRepository *repository,
} }
typedef struct { typedef struct {
const gchar *gtype_name; const char *gtype_name;
GITypelib *result_typelib; GITypelib *result_typelib;
} FindByGTypeData; } FindByGTypeData;
@ -879,7 +878,7 @@ gi_repository_find_by_gtype (GIRepository *repository,
repository = get_repository (repository); repository = get_repository (repository);
cached = g_hash_table_lookup (repository->priv->info_by_gtype, cached = g_hash_table_lookup (repository->priv->info_by_gtype,
(gpointer)gtype); (gpointer)gtype);
if (cached != NULL) if (cached != NULL)
return gi_base_info_ref (cached); return gi_base_info_ref (cached);
@ -918,8 +917,8 @@ gi_repository_find_by_gtype (GIRepository *repository,
NULL, data.result_typelib, entry->offset); NULL, data.result_typelib, entry->offset);
g_hash_table_insert (repository->priv->info_by_gtype, g_hash_table_insert (repository->priv->info_by_gtype,
(gpointer) gtype, (gpointer) gtype,
gi_base_info_ref (cached)); gi_base_info_ref (cached));
return cached; return cached;
} }
else else
@ -948,8 +947,8 @@ gi_repository_find_by_gtype (GIRepository *repository,
*/ */
GIBaseInfo * GIBaseInfo *
gi_repository_find_by_name (GIRepository *repository, gi_repository_find_by_name (GIRepository *repository,
const gchar *namespace, const char *namespace,
const gchar *name) const char *name)
{ {
GITypelib *typelib; GITypelib *typelib;
DirEntry *entry; DirEntry *entry;
@ -978,8 +977,8 @@ typedef struct {
static void static void
find_by_error_domain_foreach (gpointer key, find_by_error_domain_foreach (gpointer key,
gpointer value, gpointer value,
gpointer datap) gpointer datap)
{ {
GITypelib *typelib = (GITypelib*)value; GITypelib *typelib = (GITypelib*)value;
FindByErrorDomainData *data = datap; FindByErrorDomainData *data = datap;
@ -1011,7 +1010,7 @@ find_by_error_domain_foreach (gpointer key,
*/ */
GIEnumInfo * GIEnumInfo *
gi_repository_find_by_error_domain (GIRepository *repository, gi_repository_find_by_error_domain (GIRepository *repository,
GQuark domain) GQuark domain)
{ {
FindByErrorDomainData data; FindByErrorDomainData data;
GIEnumInfo *cached; GIEnumInfo *cached;
@ -1019,7 +1018,7 @@ gi_repository_find_by_error_domain (GIRepository *repository,
repository = get_repository (repository); repository = get_repository (repository);
cached = g_hash_table_lookup (repository->priv->info_by_error_domain, cached = g_hash_table_lookup (repository->priv->info_by_error_domain,
GUINT_TO_POINTER (domain)); GUINT_TO_POINTER (domain));
if (cached != NULL) if (cached != NULL)
return (GIEnumInfo *) gi_base_info_ref ((GIBaseInfo *)cached); return (GIEnumInfo *) gi_base_info_ref ((GIBaseInfo *)cached);
@ -1040,8 +1039,8 @@ gi_repository_find_by_error_domain (GIRepository *repository,
NULL, data.result_typelib, data.result->offset); NULL, data.result_typelib, data.result->offset);
g_hash_table_insert (repository->priv->info_by_error_domain, g_hash_table_insert (repository->priv->info_by_error_domain,
GUINT_TO_POINTER (domain), GUINT_TO_POINTER (domain),
gi_base_info_ref ((GIBaseInfo *) cached)); gi_base_info_ref ((GIBaseInfo *) cached));
return cached; return cached;
} }
return NULL; return NULL;
@ -1073,7 +1072,7 @@ gi_repository_find_by_error_domain (GIRepository *repository,
void void
gi_repository_get_object_gtype_interfaces (GIRepository *repository, gi_repository_get_object_gtype_interfaces (GIRepository *repository,
GType gtype, GType gtype,
gsize *n_interfaces_out, size_t *n_interfaces_out,
GIInterfaceInfo ***interfaces_out) GIInterfaceInfo ***interfaces_out)
{ {
GTypeInterfaceCache *cache; GTypeInterfaceCache *cache;
@ -1083,12 +1082,12 @@ gi_repository_get_object_gtype_interfaces (GIRepository *repository,
repository = get_repository (repository); repository = get_repository (repository);
cache = g_hash_table_lookup (repository->priv->interfaces_for_gtype, cache = g_hash_table_lookup (repository->priv->interfaces_for_gtype,
(gpointer) gtype); (void *) gtype);
if (cache == NULL) if (cache == NULL)
{ {
GType *interfaces; GType *interfaces;
guint n_interfaces; unsigned int i;
guint i; unsigned int n_interfaces;
GList *interface_infos = NULL, *iter; GList *interface_infos = NULL, *iter;
interfaces = g_type_interfaces (gtype, &n_interfaces); interfaces = g_type_interfaces (gtype, &n_interfaces);
@ -1130,8 +1129,8 @@ gi_repository_get_object_gtype_interfaces (GIRepository *repository,
static void static void
collect_namespaces (gpointer key, collect_namespaces (gpointer key,
gpointer value, gpointer value,
gpointer data) gpointer data)
{ {
GList **list = data; GList **list = data;
@ -1149,19 +1148,19 @@ collect_namespaces (gpointer key,
* list of namespaces * list of namespaces
* Since: 2.80 * Since: 2.80
*/ */
gchar ** char **
gi_repository_get_loaded_namespaces (GIRepository *repository) gi_repository_get_loaded_namespaces (GIRepository *repository)
{ {
GList *l, *list = NULL; GList *l, *list = NULL;
gchar **names; char **names;
gint i; size_t i;
repository = get_repository (repository); repository = get_repository (repository);
g_hash_table_foreach (repository->priv->typelibs, collect_namespaces, &list); g_hash_table_foreach (repository->priv->typelibs, collect_namespaces, &list);
g_hash_table_foreach (repository->priv->lazy_typelibs, collect_namespaces, &list); g_hash_table_foreach (repository->priv->lazy_typelibs, collect_namespaces, &list);
names = g_malloc0 (sizeof (gchar *) * (g_list_length (list) + 1)); names = g_malloc0 (sizeof (char *) * (g_list_length (list) + 1));
i = 0; i = 0;
for (l = list; l; l = l->next) for (l = list; l; l = l->next)
names[i++] = g_strdup (l->data); names[i++] = g_strdup (l->data);
@ -1186,9 +1185,9 @@ gi_repository_get_loaded_namespaces (GIRepository *repository)
* Returns: Loaded version * Returns: Loaded version
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_repository_get_version (GIRepository *repository, gi_repository_get_version (GIRepository *repository,
const gchar *namespace) const char *namespace)
{ {
GITypelib *typelib; GITypelib *typelib;
Header *header; Header *header;
@ -1232,7 +1231,7 @@ gi_repository_get_version (GIRepository *repository,
*/ */
const char * const * const char * const *
gi_repository_get_shared_libraries (GIRepository *repository, gi_repository_get_shared_libraries (GIRepository *repository,
const gchar *namespace, const char *namespace,
size_t *out_n_elements) size_t *out_n_elements)
{ {
GITypelib *typelib; GITypelib *typelib;
@ -1291,9 +1290,9 @@ gi_repository_get_shared_libraries (GIRepository *repository,
* Returns: (nullable): C namespace prefix, or `NULL` if none associated * Returns: (nullable): C namespace prefix, or `NULL` if none associated
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_repository_get_c_prefix (GIRepository *repository, gi_repository_get_c_prefix (GIRepository *repository,
const gchar *namespace_) const char *namespace_)
{ {
GITypelib *typelib; GITypelib *typelib;
Header *header; Header *header;
@ -1329,21 +1328,21 @@ gi_repository_get_c_prefix (GIRepository *repository,
* successful, `NULL` if namespace is not loaded * successful, `NULL` if namespace is not loaded
* Since: 2.80 * Since: 2.80
*/ */
const gchar * const char *
gi_repository_get_typelib_path (GIRepository *repository, gi_repository_get_typelib_path (GIRepository *repository,
const gchar *namespace) const char *namespace)
{ {
gpointer orig_key, value; gpointer orig_key, value;
repository = get_repository (repository); repository = get_repository (repository);
if (!g_hash_table_lookup_extended (repository->priv->typelibs, namespace, if (!g_hash_table_lookup_extended (repository->priv->typelibs, namespace,
&orig_key, &value)) &orig_key, &value))
{ {
if (!g_hash_table_lookup_extended (repository->priv->lazy_typelibs, namespace, if (!g_hash_table_lookup_extended (repository->priv->lazy_typelibs, namespace,
&orig_key, &value)) &orig_key, &value))
return NULL; return NULL;
} }
return ((char*)orig_key) + strlen ((char *) orig_key) + 1; return ((char*)orig_key) + strlen ((char *) orig_key) + 1;
} }
@ -1379,11 +1378,11 @@ find_namespace_version (const char *namespace,
mfile = g_mapped_file_new (path, FALSE, &error); mfile = g_mapped_file_new (path, FALSE, &error);
if (error) if (error)
{ {
g_free (path); g_free (path);
g_clear_error (&error); g_clear_error (&error);
continue; continue;
} }
*path_ret = path; *path_ret = path;
break; break;
} }
@ -1393,8 +1392,8 @@ find_namespace_version (const char *namespace,
static gboolean static gboolean
parse_version (const char *version, parse_version (const char *version,
int *major, int *major,
int *minor) int *minor)
{ {
const char *dot; const char *dot;
char *end; char *end;
@ -1416,7 +1415,7 @@ parse_version (const char *version,
static int static int
compare_version (const char *v1, compare_version (const char *v1,
const char *v2) const char *v2)
{ {
gboolean success; gboolean success;
int v1_major, v1_minor; int v1_major, v1_minor;
@ -1452,7 +1451,7 @@ struct NamespaceVersionCandidadate
static int static int
compare_candidate_reverse (struct NamespaceVersionCandidadate *c1, compare_candidate_reverse (struct NamespaceVersionCandidadate *c1,
struct NamespaceVersionCandidadate *c2) struct NamespaceVersionCandidadate *c2)
{ {
int result = compare_version (c1->version, c2->version); int result = compare_version (c1->version, c2->version);
/* First, check the version */ /* First, check the version */
@ -1467,11 +1466,11 @@ compare_candidate_reverse (struct NamespaceVersionCandidadate *c1,
* pick the earlier one. * pick the earlier one.
*/ */
if (c1->path_index == c2->path_index) if (c1->path_index == c2->path_index)
return 0; return 0;
else if (c1->path_index > c2->path_index) else if (c1->path_index > c2->path_index)
return 1; return 1;
else else
return -1; return -1;
} }
} }
@ -1509,66 +1508,66 @@ enumerate_namespace_versions (const char *namespace,
dirname = search_paths[i]; dirname = search_paths[i];
dir = g_dir_open (dirname, 0, NULL); dir = g_dir_open (dirname, 0, NULL);
if (dir == NULL) if (dir == NULL)
continue; continue;
while ((entry = g_dir_read_name (dir)) != NULL) while ((entry = g_dir_read_name (dir)) != NULL)
{ {
GMappedFile *mfile; GMappedFile *mfile;
char *path, *version; char *path, *version;
struct NamespaceVersionCandidadate *candidate; struct NamespaceVersionCandidadate *candidate;
if (!g_str_has_suffix (entry, ".typelib")) if (!g_str_has_suffix (entry, ".typelib"))
continue; continue;
if (g_str_has_prefix (entry, namespace_dash)) if (g_str_has_prefix (entry, namespace_dash))
{ {
const char *last_dash; const char *last_dash;
const char *name_end; const char *name_end;
int major, minor; int major, minor;
if (g_str_equal (namespace, GIREPOSITORY_TYPELIB_NAME) && if (g_str_equal (namespace, GIREPOSITORY_TYPELIB_NAME) &&
!g_str_equal (entry, GIREPOSITORY_TYPELIB_FILENAME)) !g_str_equal (entry, GIREPOSITORY_TYPELIB_FILENAME))
{ {
g_debug ("Ignoring %s because this libgirepository " g_debug ("Ignoring %s because this libgirepository "
"corresponds to %s", "corresponds to %s",
entry, GIREPOSITORY_TYPELIB_FILENAME); entry, GIREPOSITORY_TYPELIB_FILENAME);
continue; continue;
} }
name_end = strrchr (entry, '.'); name_end = strrchr (entry, '.');
last_dash = strrchr (entry, '-'); last_dash = strrchr (entry, '-');
version = g_strndup (last_dash+1, name_end-(last_dash+1)); version = g_strndup (last_dash+1, name_end-(last_dash+1));
if (!parse_version (version, &major, &minor)) if (!parse_version (version, &major, &minor))
{ {
g_free (version); g_free (version);
continue; continue;
} }
} }
else else
continue; continue;
if (g_hash_table_lookup (found_versions, version) != NULL) if (g_hash_table_lookup (found_versions, version) != NULL)
{ {
g_free (version); g_free (version);
continue; continue;
} }
path = g_build_filename (dirname, entry, NULL); path = g_build_filename (dirname, entry, NULL);
mfile = g_mapped_file_new (path, FALSE, &error); mfile = g_mapped_file_new (path, FALSE, &error);
if (mfile == NULL) if (mfile == NULL)
{ {
g_free (path); g_free (path);
g_free (version); g_free (version);
g_clear_error (&error); g_clear_error (&error);
continue; continue;
} }
candidate = g_slice_new0 (struct NamespaceVersionCandidadate); candidate = g_slice_new0 (struct NamespaceVersionCandidadate);
candidate->mfile = mfile; candidate->mfile = mfile;
candidate->path_index = index; candidate->path_index = index;
candidate->path = path; candidate->path = path;
candidate->version = version; candidate->version = version;
candidates = g_slist_prepend (candidates, candidate); candidates = g_slist_prepend (candidates, candidate);
g_hash_table_add (found_versions, version); g_hash_table_add (found_versions, version);
} }
g_dir_close (dir); g_dir_close (dir);
index++; index++;
} }
@ -1629,12 +1628,12 @@ find_namespace_latest (const char *namespace,
*/ */
char ** char **
gi_repository_enumerate_versions (GIRepository *repository, gi_repository_enumerate_versions (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
size_t *n_versions_out) size_t *n_versions_out)
{ {
GPtrArray *versions; GPtrArray *versions;
GSList *candidates, *link; GSList *candidates, *link;
const gchar *loaded_version; const char *loaded_version;
char **ret; char **ret;
init_globals (); init_globals ();
@ -1689,7 +1688,7 @@ require_internal (GIRepository *repository,
GITypelib *ret = NULL; GITypelib *ret = NULL;
Header *header; Header *header;
GITypelib *typelib = NULL; GITypelib *typelib = NULL;
const gchar *typelib_namespace, *typelib_version; const char *typelib_namespace, *typelib_version;
gboolean allow_lazy = (flags & GI_REPOSITORY_LOAD_FLAG_LAZY) > 0; gboolean allow_lazy = (flags & GI_REPOSITORY_LOAD_FLAG_LAZY) > 0;
gboolean is_lazy; gboolean is_lazy;
char *version_conflict = NULL; char *version_conflict = NULL;
@ -1708,9 +1707,9 @@ require_internal (GIRepository *repository,
if (version_conflict != NULL) if (version_conflict != NULL)
{ {
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT, GI_REPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT,
"Requiring namespace '%s' version '%s', but '%s' is already loaded", "Requiring namespace '%s' version '%s', but '%s' is already loaded",
namespace, version, version_conflict); namespace, version, version_conflict);
return NULL; return NULL;
} }
@ -1729,15 +1728,15 @@ require_internal (GIRepository *repository,
if (mfile == NULL) if (mfile == NULL)
{ {
if (version != NULL) if (version != NULL)
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND, GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND,
"Typelib file for namespace '%s', version '%s' not found", "Typelib file for namespace '%s', version '%s' not found",
namespace, version); namespace, version);
else else
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND, GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND,
"Typelib file for namespace '%s' (any version) not found", "Typelib file for namespace '%s' (any version) not found",
namespace); namespace);
goto out; goto out;
} }
@ -1746,12 +1745,12 @@ require_internal (GIRepository *repository,
typelib = gi_typelib_new_from_mapped_file (mfile, &temp_error); typelib = gi_typelib_new_from_mapped_file (mfile, &temp_error);
if (!typelib) if (!typelib)
{ {
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND, GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND,
"Failed to load typelib file '%s' for namespace '%s': %s", "Failed to load typelib file '%s' for namespace '%s': %s",
path, namespace, temp_error->message); path, namespace, temp_error->message);
g_clear_error (&temp_error); g_clear_error (&temp_error);
goto out; goto out;
} }
} }
header = (Header *) typelib->data; header = (Header *) typelib->data;
@ -1761,26 +1760,26 @@ require_internal (GIRepository *repository,
if (strcmp (typelib_namespace, namespace) != 0) if (strcmp (typelib_namespace, namespace) != 0)
{ {
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_NAMESPACE_MISMATCH, GI_REPOSITORY_ERROR_NAMESPACE_MISMATCH,
"Typelib file %s for namespace '%s' contains " "Typelib file %s for namespace '%s' contains "
"namespace '%s' which doesn't match the file name", "namespace '%s' which doesn't match the file name",
path, namespace, typelib_namespace); path, namespace, typelib_namespace);
gi_typelib_free (typelib); gi_typelib_free (typelib);
goto out; goto out;
} }
if (version != NULL && strcmp (typelib_version, version) != 0) if (version != NULL && strcmp (typelib_version, version) != 0)
{ {
g_set_error (error, GI_REPOSITORY_ERROR, g_set_error (error, GI_REPOSITORY_ERROR,
GI_REPOSITORY_ERROR_NAMESPACE_MISMATCH, GI_REPOSITORY_ERROR_NAMESPACE_MISMATCH,
"Typelib file %s for namespace '%s' contains " "Typelib file %s for namespace '%s' contains "
"version '%s' which doesn't match the expected version '%s'", "version '%s' which doesn't match the expected version '%s'",
path, namespace, typelib_version, version); path, namespace, typelib_version, version);
gi_typelib_free (typelib); gi_typelib_free (typelib);
goto out; goto out;
} }
if (!register_internal (repository, path, allow_lazy, if (!register_internal (repository, path, allow_lazy,
typelib, error)) typelib, error))
{ {
gi_typelib_free (typelib); gi_typelib_free (typelib);
goto out; goto out;
@ -1814,10 +1813,10 @@ require_internal (GIRepository *repository,
*/ */
GITypelib * GITypelib *
gi_repository_require (GIRepository *repository, gi_repository_require (GIRepository *repository,
const gchar *namespace, const char *namespace,
const gchar *version, const char *version,
GIRepositoryLoadFlags flags, GIRepositoryLoadFlags flags,
GError **error) GError **error)
{ {
GITypelib *typelib; GITypelib *typelib;
@ -1852,12 +1851,12 @@ gi_repository_require (GIRepository *repository,
* Since: 2.80 * Since: 2.80
*/ */
GITypelib * GITypelib *
gi_repository_require_private (GIRepository *repository, gi_repository_require_private (GIRepository *repository,
const gchar *typelib_dir, const char *typelib_dir,
const gchar *namespace, const char *namespace,
const gchar *version, const char *version,
GIRepositoryLoadFlags flags, GIRepositoryLoadFlags flags,
GError **error) GError **error)
{ {
const char * const search_path[] = { typelib_dir, NULL }; const char * const search_path[] = { typelib_dir, NULL };
@ -1867,9 +1866,9 @@ gi_repository_require_private (GIRepository *repository,
static gboolean static gboolean
gi_repository_introspect_cb (const char *option_name, gi_repository_introspect_cb (const char *option_name,
const char *value, const char *value,
gpointer data, gpointer data,
GError **error) GError **error)
{ {
GError *tmp_error = NULL; GError *tmp_error = NULL;
char **args; char **args;
@ -1879,7 +1878,7 @@ gi_repository_introspect_cb (const char *option_name,
if (!gi_repository_dump (args[0], args[1], &tmp_error)) if (!gi_repository_dump (args[0], args[1], &tmp_error))
{ {
g_error ("Failed to extract GType data: %s", g_error ("Failed to extract GType data: %s",
tmp_error->message); tmp_error->message);
exit (1); exit (1);
} }
exit (0); exit (0);
@ -1931,7 +1930,7 @@ gi_repository_error_quark (void)
* Returns: the string * Returns: the string
* Since: 2.80 * Since: 2.80
*/ */
const gchar* const char *
gi_type_tag_to_string (GITypeTag type) gi_type_tag_to_string (GITypeTag type)
{ {
switch (type) switch (type)
@ -1994,7 +1993,7 @@ gi_type_tag_to_string (GITypeTag type)
* Returns: the string * Returns: the string
* Since: 2.80 * Since: 2.80
*/ */
const gchar* const char *
gi_info_type_to_string (GIInfoType type) gi_info_type_to_string (GIInfoType type)
{ {
switch (type) switch (type)

View File

@ -119,44 +119,44 @@ const char * gi_repository_load_typelib (GIRepository *repository,
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_repository_is_registered (GIRepository *repository, gboolean gi_repository_is_registered (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
const gchar *version); const char *version);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIBaseInfo * gi_repository_find_by_name (GIRepository *repository, GIBaseInfo * gi_repository_find_by_name (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
char ** gi_repository_enumerate_versions (GIRepository *repository, char ** gi_repository_enumerate_versions (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
size_t *n_versions_out); size_t *n_versions_out);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypelib * gi_repository_require (GIRepository *repository, GITypelib * gi_repository_require (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
const gchar *version, const char *version,
GIRepositoryLoadFlags flags, GIRepositoryLoadFlags flags,
GError **error); GError **error);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypelib * gi_repository_require_private (GIRepository *repository, GITypelib * gi_repository_require_private (GIRepository *repository,
const gchar *typelib_dir, const char *typelib_dir,
const gchar *namespace_, const char *namespace_,
const gchar *version, const char *version,
GIRepositoryLoadFlags flags, GIRepositoryLoadFlags flags,
GError **error); GError **error);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gchar ** gi_repository_get_immediate_dependencies (GIRepository *repository, char ** gi_repository_get_immediate_dependencies (GIRepository *repository,
const gchar *namespace_); const char *namespace_);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gchar ** gi_repository_get_dependencies (GIRepository *repository, char ** gi_repository_get_dependencies (GIRepository *repository,
const gchar *namespace_); const char *namespace_);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gchar ** gi_repository_get_loaded_namespaces (GIRepository *repository); char ** gi_repository_get_loaded_namespaces (GIRepository *repository);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIBaseInfo * gi_repository_find_by_gtype (GIRepository *repository, GIBaseInfo * gi_repository_find_by_gtype (GIRepository *repository,
@ -165,35 +165,35 @@ GIBaseInfo * gi_repository_find_by_gtype (GIRepository *repository,
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
void gi_repository_get_object_gtype_interfaces (GIRepository *repository, void gi_repository_get_object_gtype_interfaces (GIRepository *repository,
GType gtype, GType gtype,
gsize *n_interfaces_out, size_t *n_interfaces_out,
GIInterfaceInfo ***interfaces_out); GIInterfaceInfo ***interfaces_out);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_repository_get_n_infos (GIRepository *repository, unsigned int gi_repository_get_n_infos (GIRepository *repository,
const gchar *namespace_); const char *namespace_);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIBaseInfo * gi_repository_get_info (GIRepository *repository, GIBaseInfo * gi_repository_get_info (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
guint idx); unsigned int idx);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIEnumInfo * gi_repository_find_by_error_domain (GIRepository *repository, GIEnumInfo * gi_repository_find_by_error_domain (GIRepository *repository,
GQuark domain); GQuark domain);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_repository_get_typelib_path (GIRepository *repository, const char * gi_repository_get_typelib_path (GIRepository *repository,
const gchar *namespace_); const char *namespace_);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * const *gi_repository_get_shared_libraries (GIRepository *repository, const char * const *gi_repository_get_shared_libraries (GIRepository *repository,
const gchar *namespace_, const char *namespace_,
size_t *out_n_elements); size_t *out_n_elements);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_repository_get_c_prefix (GIRepository *repository, const char * gi_repository_get_c_prefix (GIRepository *repository,
const gchar *namespace_); const char *namespace_);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_repository_get_version (GIRepository *repository, const char * gi_repository_get_version (GIRepository *repository,
const gchar *namespace_); const char *namespace_);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
@ -249,9 +249,9 @@ GQuark gi_repository_error_quark (void);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
void gi_cclosure_marshal_generic (GClosure *closure, void gi_cclosure_marshal_generic (GClosure *closure,
GValue *return_gvalue, GValue *return_gvalue,
guint n_param_values, unsigned int n_param_values,
const GValue *param_values, const GValue *param_values,
gpointer invocation_hint, void *invocation_hint,
gpointer marshal_data); void *marshal_data);
G_END_DECLS G_END_DECLS

View File

@ -38,7 +38,7 @@
static ffi_type * static ffi_type *
gi_type_tag_get_ffi_type_internal (GITypeTag tag, gi_type_tag_get_ffi_type_internal (GITypeTag tag,
gboolean is_pointer, gboolean is_pointer,
gboolean is_enum) gboolean is_enum)
{ {
switch (tag) switch (tag)
{ {
@ -83,13 +83,13 @@ gi_type_tag_get_ffi_type_internal (GITypeTag tag,
return &ffi_type_pointer; return &ffi_type_pointer;
case GI_TYPE_TAG_INTERFACE: case GI_TYPE_TAG_INTERFACE:
{ {
/* We need to handle enums specially: /* We need to handle enums specially:
* https://bugzilla.gnome.org/show_bug.cgi?id=665150 * https://bugzilla.gnome.org/show_bug.cgi?id=665150
*/ */
if (!is_enum) if (!is_enum)
return &ffi_type_pointer; return &ffi_type_pointer;
else else
return &ffi_type_sint32; return &ffi_type_sint32;
} }
case GI_TYPE_TAG_VOID: case GI_TYPE_TAG_VOID:
if (is_pointer) if (is_pointer)
@ -118,7 +118,7 @@ gi_type_tag_get_ffi_type_internal (GITypeTag tag,
*/ */
ffi_type * ffi_type *
gi_type_tag_get_ffi_type (GITypeTag type_tag, gi_type_tag_get_ffi_type (GITypeTag type_tag,
gboolean is_pointer) gboolean is_pointer)
{ {
return gi_type_tag_get_ffi_type_internal (type_tag, is_pointer, FALSE); return gi_type_tag_get_ffi_type_internal (type_tag, is_pointer, FALSE);
} }
@ -175,8 +175,7 @@ gi_callable_info_get_ffi_arg_types (GICallableInfo *callable_info,
{ {
ffi_type **arg_types; ffi_type **arg_types;
gboolean is_method, throws; gboolean is_method, throws;
size_t n_invoke_args; size_t n_args, n_invoke_args, i, offset;
guint n_args, i, offset;
g_return_val_if_fail (callable_info != NULL, NULL); g_return_val_if_fail (callable_info != NULL, NULL);
@ -276,7 +275,7 @@ gi_function_info_prep_invoker (GIFunctionInfo *info,
GError **error) GError **error)
{ {
const char *symbol; const char *symbol;
gpointer addr; void *addr;
g_return_val_if_fail (info != NULL, FALSE); g_return_val_if_fail (info != NULL, FALSE);
g_return_val_if_fail (invoker != NULL, FALSE); g_return_val_if_fail (invoker != NULL, FALSE);
@ -316,7 +315,7 @@ gi_function_info_prep_invoker (GIFunctionInfo *info,
* Since: 2.80 * Since: 2.80
*/ */
gboolean gboolean
gi_function_invoker_new_for_address (gpointer addr, gi_function_invoker_new_for_address (void *addr,
GICallableInfo *info, GICallableInfo *info,
GIFunctionInvoker *invoker, GIFunctionInvoker *invoker,
GError **error) GError **error)
@ -355,8 +354,8 @@ gi_function_invoker_destroy (GIFunctionInvoker *invoker)
typedef struct { typedef struct {
ffi_closure ffi_closure; ffi_closure ffi_closure;
gpointer writable_self; void *writable_self;
gpointer native_address; void *native_address;
} GIClosureWrapper; } GIClosureWrapper;
/** /**
@ -377,9 +376,9 @@ ffi_closure *
gi_callable_info_create_closure (GICallableInfo *callable_info, gi_callable_info_create_closure (GICallableInfo *callable_info,
ffi_cif *cif, ffi_cif *cif,
GIFFIClosureCallback callback, GIFFIClosureCallback callback,
gpointer user_data) void *user_data)
{ {
gpointer exec_ptr; void *exec_ptr;
size_t n_args; size_t n_args;
ffi_type **atypes; ffi_type **atypes;
GIClosureWrapper *closure; GIClosureWrapper *closure;
@ -432,7 +431,7 @@ gi_callable_info_create_closure (GICallableInfo *callable_info,
* Returns: (transfer none): native address * Returns: (transfer none): native address
* Since: 2.80 * Since: 2.80
*/ */
gpointer * void **
gi_callable_info_get_closure_native_address (GICallableInfo *callable_info, gi_callable_info_get_closure_native_address (GICallableInfo *callable_info,
ffi_closure *closure) ffi_closure *closure)
{ {

View File

@ -65,9 +65,9 @@ typedef void (*GIFFIClosureCallback) (ffi_cif *cif,
*/ */
typedef struct { typedef struct {
ffi_cif cif; ffi_cif cif;
gpointer native_address; void *native_address;
/*< private >*/ /*< private >*/
gpointer padding[3]; void *padding[3];
} GIFunctionInvoker; } GIFunctionInvoker;
/** /**
@ -102,7 +102,7 @@ gboolean gi_function_info_prep_invoker (GIFunctionInfo *info,
GError **error); GError **error);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_function_invoker_new_for_address (gpointer addr, gboolean gi_function_invoker_new_for_address (void *addr,
GICallableInfo *info, GICallableInfo *info,
GIFunctionInvoker *invoker, GIFunctionInvoker *invoker,
GError **error); GError **error);
@ -115,10 +115,10 @@ GI_AVAILABLE_IN_ALL
ffi_closure * gi_callable_info_create_closure (GICallableInfo *callable_info, ffi_closure * gi_callable_info_create_closure (GICallableInfo *callable_info,
ffi_cif *cif, ffi_cif *cif,
GIFFIClosureCallback callback, GIFFIClosureCallback callback,
gpointer user_data); void *user_data);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gpointer * gi_callable_info_get_closure_native_address (GICallableInfo *callable_info, void ** gi_callable_info_get_closure_native_address (GICallableInfo *callable_info,
ffi_closure *closure); ffi_closure *closure);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL

View File

@ -36,17 +36,17 @@ struct _GIIrTypelibBuild {
GHashTable *strings; GHashTable *strings;
GHashTable *types; GHashTable *types;
GList *nodes_with_attributes; GList *nodes_with_attributes;
guint32 n_attributes; uint32_t n_attributes;
guchar *data; uint8_t *data;
GList *stack; GList *stack;
}; };
struct _GIIrModule struct _GIIrModule
{ {
gchar *name; char *name;
gchar *version; char *version;
gchar *shared_library; char *shared_library;
gchar *c_prefix; char *c_prefix;
GList *dependencies; GList *dependencies;
GList *entries; GList *entries;
@ -66,10 +66,10 @@ struct _GIIrModule
GHashTable *disguised_structures; GHashTable *disguised_structures;
}; };
GIIrModule *gi_ir_module_new (const gchar *name, GIIrModule *gi_ir_module_new (const char *name,
const gchar *nsversion, const char *nsversion,
const gchar *module_filename, const char *module_filename,
const gchar *c_prefix); const char *c_prefix);
void gi_ir_module_free (GIIrModule *module); void gi_ir_module_free (GIIrModule *module);
void gi_ir_module_add_include_module (GIIrModule *module, void gi_ir_module_add_include_module (GIIrModule *module,
@ -77,7 +77,10 @@ void gi_ir_module_add_include_module (GIIrModule *module,
GITypelib * gi_ir_module_build_typelib (GIIrModule *module); GITypelib * gi_ir_module_build_typelib (GIIrModule *module);
void gi_ir_module_fatal (GIIrTypelibBuild *build, guint line, const char *msg, ...) G_GNUC_PRINTF (3, 4) G_GNUC_NORETURN; void gi_ir_module_fatal (GIIrTypelibBuild *build,
unsigned int line,
const char *msg,
...) G_GNUC_PRINTF (3, 4) G_GNUC_NORETURN;
void gi_ir_node_init_stats (void); void gi_ir_node_init_stats (void);
void gi_ir_node_dump_stats (void); void gi_ir_node_dump_stats (void);

View File

@ -38,10 +38,10 @@
#define NUM_SECTIONS 2 #define NUM_SECTIONS 2
GIIrModule * GIIrModule *
gi_ir_module_new (const gchar *name, gi_ir_module_new (const char *name,
const gchar *version, const char *version,
const gchar *shared_library, const char *shared_library,
const gchar *c_prefix) const char *c_prefix)
{ {
GIIrModule *module; GIIrModule *module;
@ -98,7 +98,7 @@ gi_ir_module_free (GIIrModule *module)
*/ */
void void
gi_ir_module_fatal (GIIrTypelibBuild *build, gi_ir_module_fatal (GIIrTypelibBuild *build,
guint line, unsigned int line,
const char *msg, const char *msg,
...) ...)
{ {
@ -114,7 +114,7 @@ gi_ir_module_fatal (GIIrTypelibBuild *build,
context = g_string_new (""); context = g_string_new ("");
if (line > 0) if (line > 0)
g_string_append_printf (context, "%d: ", line); g_string_append_printf (context, "%u: ", line);
if (build->stack) if (build->stack)
g_string_append (context, "In "); g_string_append (context, "In ");
for (link = g_list_last (build->stack); link; link = link->prev) for (link = g_list_last (build->stack); link; link = link->prev)
@ -122,16 +122,16 @@ gi_ir_module_fatal (GIIrTypelibBuild *build,
GIIrNode *node = link->data; GIIrNode *node = link->data;
const char *name = node->name; const char *name = node->name;
if (name) if (name)
g_string_append (context, name); g_string_append (context, name);
if (link->prev) if (link->prev)
g_string_append (context, "."); g_string_append (context, ".");
} }
if (build->stack) if (build->stack)
g_string_append (context, ": "); g_string_append (context, ": ");
g_printerr ("%s-%s.gir:%serror: %s\n", build->module->name, g_printerr ("%s-%s.gir:%serror: %s\n", build->module->name,
build->module->version, build->module->version,
context->str, formatted); context->str, formatted);
g_string_free (context, TRUE); g_string_free (context, TRUE);
exit (1); exit (1);
@ -141,8 +141,8 @@ gi_ir_module_fatal (GIIrTypelibBuild *build,
static void static void
add_alias_foreach (gpointer key, add_alias_foreach (gpointer key,
gpointer value, gpointer value,
gpointer data) gpointer data)
{ {
GIIrModule *module = data; GIIrModule *module = data;
@ -161,8 +161,8 @@ add_pointer_structure_foreach (gpointer key,
static void static void
add_disguised_structure_foreach (gpointer key, add_disguised_structure_foreach (gpointer key,
gpointer value, gpointer value,
gpointer data) gpointer data)
{ {
GIIrModule *module = data; GIIrModule *module = data;
@ -174,35 +174,35 @@ gi_ir_module_add_include_module (GIIrModule *module,
GIIrModule *include_module) GIIrModule *include_module)
{ {
module->include_modules = g_list_prepend (module->include_modules, module->include_modules = g_list_prepend (module->include_modules,
include_module); include_module);
g_hash_table_foreach (include_module->aliases, g_hash_table_foreach (include_module->aliases,
add_alias_foreach, add_alias_foreach,
module); module);
g_hash_table_foreach (include_module->pointer_structures, g_hash_table_foreach (include_module->pointer_structures,
add_pointer_structure_foreach, add_pointer_structure_foreach,
module); module);
g_hash_table_foreach (include_module->disguised_structures, g_hash_table_foreach (include_module->disguised_structures,
add_disguised_structure_foreach, add_disguised_structure_foreach,
module); module);
} }
struct AttributeWriteData struct AttributeWriteData
{ {
guint count; unsigned int count;
guchar *databuf; uint8_t *databuf;
GIIrNode *node; GIIrNode *node;
GHashTable *strings; GHashTable *strings;
guint32 *offset; uint32_t *offset;
guint32 *offset2; uint32_t *offset2;
}; };
static void static void
write_attribute (gpointer key, gpointer value, gpointer datap) write_attribute (gpointer key, gpointer value, gpointer datap)
{ {
struct AttributeWriteData *data = datap; struct AttributeWriteData *data = datap;
guint32 old_offset = *(data->offset); uint32_t old_offset = *(data->offset);
AttributeBlob *blob = (AttributeBlob*)&(data->databuf[old_offset]); AttributeBlob *blob = (AttributeBlob*)&(data->databuf[old_offset]);
*(data->offset) += sizeof (AttributeBlob); *(data->offset) += sizeof (AttributeBlob);
@ -214,13 +214,13 @@ write_attribute (gpointer key, gpointer value, gpointer datap)
data->count++; data->count++;
} }
static guint static unsigned
write_attributes (GIIrModule *module, write_attributes (GIIrModule *module,
GIIrNode *node, GIIrNode *node,
GHashTable *strings, GHashTable *strings,
guchar *data, uint8_t *data,
guint32 *offset, uint32_t *offset,
guint32 *offset2) uint32_t *offset2)
{ {
struct AttributeWriteData wdata; struct AttributeWriteData wdata;
wdata.count = 0; wdata.count = 0;
@ -235,9 +235,9 @@ write_attributes (GIIrModule *module,
return wdata.count; return wdata.count;
} }
static gint static int
node_cmp_offset_func (gconstpointer a, node_cmp_offset_func (const void *a,
gconstpointer b) const void *b)
{ {
const GIIrNode *na = a; const GIIrNode *na = a;
const GIIrNode *nb = b; const GIIrNode *nb = b;
@ -245,7 +245,7 @@ node_cmp_offset_func (gconstpointer a,
} }
static void static void
alloc_section (guint8 *data, SectionType section_id, guint32 offset) alloc_section (uint8_t *data, SectionType section_id, uint32_t offset)
{ {
int i; int i;
Header *header = (Header*)data; Header *header = (Header*)data;
@ -256,31 +256,31 @@ alloc_section (guint8 *data, SectionType section_id, guint32 offset)
for (i = 0; i < NUM_SECTIONS; i++) for (i = 0; i < NUM_SECTIONS; i++)
{ {
if (section_data->id == GI_SECTION_END) if (section_data->id == GI_SECTION_END)
{ {
section_data->id = section_id; section_data->id = section_id;
section_data->offset = offset; section_data->offset = offset;
return; return;
} }
section_data++; section_data++;
} }
g_assert_not_reached (); g_assert_not_reached ();
} }
static guint8* static uint8_t *
add_directory_index_section (guint8 *data, GIIrModule *module, guint32 *offset2) add_directory_index_section (uint8_t *data, GIIrModule *module, uint32_t *offset2)
{ {
DirEntry *entry; DirEntry *entry;
Header *header = (Header*)data; Header *header = (Header*)data;
GITypelibHashBuilder *dirindex_builder; GITypelibHashBuilder *dirindex_builder;
guint i, n_interfaces; uint16_t n_interfaces;
guint16 required_size; uint16_t required_size;
guint32 new_offset; uint32_t new_offset;
dirindex_builder = gi_typelib_hash_builder_new (); dirindex_builder = gi_typelib_hash_builder_new ();
n_interfaces = ((Header *)data)->n_local_entries; n_interfaces = ((Header *)data)->n_local_entries;
for (i = 0; i < n_interfaces; i++) for (uint16_t i = 0; i < n_interfaces; i++)
{ {
const char *str; const char *str;
entry = (DirEntry *)&data[header->directory + (i * header->entry_blob_size)]; entry = (DirEntry *)&data[header->directory + (i * header->entry_blob_size)];
@ -306,7 +306,7 @@ add_directory_index_section (guint8 *data, GIIrModule *module, guint32 *offset2)
data = g_realloc (data, new_offset); data = g_realloc (data, new_offset);
gi_typelib_hash_builder_pack (dirindex_builder, ((guint8*)data) + *offset2, required_size); gi_typelib_hash_builder_pack (dirindex_builder, ((uint8_t*)data) + *offset2, required_size);
*offset2 = new_offset; *offset2 = new_offset;
@ -319,21 +319,21 @@ gi_ir_module_build_typelib (GIIrModule *module)
{ {
GError *error = NULL; GError *error = NULL;
GITypelib *typelib; GITypelib *typelib;
gsize length; size_t length;
guint i; size_t i;
GList *e; GList *e;
Header *header; Header *header;
DirEntry *entry; DirEntry *entry;
guint32 header_size; uint32_t header_size;
guint32 dir_size; uint32_t dir_size;
guint32 n_entries; uint32_t n_entries;
guint32 n_local_entries; uint32_t n_local_entries;
guint32 size, offset, offset2, old_offset; uint32_t size, offset, offset2, old_offset;
GHashTable *strings; GHashTable *strings;
GHashTable *types; GHashTable *types;
GList *nodes_with_attributes; GList *nodes_with_attributes;
char *dependencies; char *dependencies;
guchar *data; uint8_t *data;
Section *section; Section *section;
header_size = ALIGN_VALUE (sizeof (Header), 4); header_size = ALIGN_VALUE (sizeof (Header), 4);
@ -346,18 +346,18 @@ gi_ir_module_build_typelib (GIIrModule *module)
GList *link; GList *link;
for (link = module->dependencies; link; link = link->next) for (link = module->dependencies; link; link = link->next)
{ {
const char *dependency = link->data; const char *dependency = link->data;
if (!strcmp (dependency, module->name)) if (!strcmp (dependency, module->name))
continue; continue;
g_string_append (dependencies_str, dependency); g_string_append (dependencies_str, dependency);
if (link->next) if (link->next)
g_string_append_c (dependencies_str, '|'); g_string_append_c (dependencies_str, '|');
} }
dependencies = g_string_free (dependencies_str, FALSE); dependencies = g_string_free (dependencies_str, FALSE);
if (!dependencies[0]) if (!dependencies[0])
{ {
g_free (dependencies); g_free (dependencies);
dependencies = NULL; dependencies = NULL;
} }
} }
@ -369,7 +369,7 @@ gi_ir_module_build_typelib (GIIrModule *module)
n_entries = g_list_length (module->entries); n_entries = g_list_length (module->entries);
g_message ("%d entries (%d local), %d dependencies", n_entries, n_local_entries, g_message ("%d entries (%d local), %d dependencies", n_entries, n_local_entries,
g_list_length (module->dependencies)); g_list_length (module->dependencies));
dir_size = n_entries * sizeof (DirEntry); dir_size = n_entries * sizeof (DirEntry);
size = header_size + dir_size; size = header_size + dir_size;
@ -398,7 +398,7 @@ gi_ir_module_build_typelib (GIIrModule *module)
size += sizeof (Section) * NUM_SECTIONS; size += sizeof (Section) * NUM_SECTIONS;
g_message ("allocating %d bytes (%d header, %d directory, %d entries)", g_message ("allocating %d bytes (%d header, %d directory, %d entries)",
size, header_size, dir_size, size - header_size - dir_size); size, header_size, dir_size, size - header_size - dir_size);
data = g_malloc0 (size); data = g_malloc0 (size);
@ -476,67 +476,67 @@ gi_ir_module_build_typelib (GIIrModule *module)
if (strchr (node->name, '.')) if (strchr (node->name, '.'))
{ {
g_error ("Names may not contain '.'"); g_error ("Names may not contain '.'");
} }
/* we picked up implicit xref nodes, start over */ /* we picked up implicit xref nodes, start over */
if (i == n_entries) if (i == n_entries)
{ {
GList *link; GList *link;
g_message ("Found implicit cross references, starting over"); g_message ("Found implicit cross references, starting over");
g_hash_table_destroy (strings); g_hash_table_destroy (strings);
g_hash_table_destroy (types); g_hash_table_destroy (types);
/* Reset the cached offsets */ /* Reset the cached offsets */
for (link = nodes_with_attributes; link; link = link->next) for (link = nodes_with_attributes; link; link = link->next)
((GIIrNode *) link->data)->offset = 0; ((GIIrNode *) link->data)->offset = 0;
g_list_free (nodes_with_attributes); g_list_free (nodes_with_attributes);
strings = NULL; strings = NULL;
g_free (data); g_free (data);
data = NULL; data = NULL;
goto restart; goto restart;
} }
offset = offset2; offset = offset2;
if (node->type == GI_IR_NODE_XREF) if (node->type == GI_IR_NODE_XREF)
{ {
const char *namespace = ((GIIrNodeXRef*)node)->namespace; const char *namespace = ((GIIrNodeXRef*)node)->namespace;
entry->blob_type = 0; entry->blob_type = 0;
entry->local = FALSE; entry->local = FALSE;
entry->offset = gi_ir_write_string (namespace, strings, data, &offset2); entry->offset = gi_ir_write_string (namespace, strings, data, &offset2);
entry->name = gi_ir_write_string (node->name, strings, data, &offset2); entry->name = gi_ir_write_string (node->name, strings, data, &offset2);
} }
else else
{ {
old_offset = offset; old_offset = offset;
offset2 = offset + gi_ir_node_get_size (node); offset2 = offset + gi_ir_node_get_size (node);
entry->blob_type = node->type; entry->blob_type = node->type;
entry->local = TRUE; entry->local = TRUE;
entry->offset = offset; entry->offset = offset;
entry->name = gi_ir_write_string (node->name, strings, data, &offset2); entry->name = gi_ir_write_string (node->name, strings, data, &offset2);
memset (&build, 0, sizeof (build)); memset (&build, 0, sizeof (build));
build.module = module; build.module = module;
build.strings = strings; build.strings = strings;
build.types = types; build.types = types;
build.nodes_with_attributes = nodes_with_attributes; build.nodes_with_attributes = nodes_with_attributes;
build.n_attributes = header->n_attributes; build.n_attributes = header->n_attributes;
build.data = data; build.data = data;
gi_ir_node_build_typelib (node, NULL, &build, &offset, &offset2, NULL); gi_ir_node_build_typelib (node, NULL, &build, &offset, &offset2, NULL);
nodes_with_attributes = build.nodes_with_attributes; nodes_with_attributes = build.nodes_with_attributes;
header->n_attributes = build.n_attributes; header->n_attributes = build.n_attributes;
if (offset2 > old_offset + gi_ir_node_get_full_size (node)) if (offset2 > old_offset + gi_ir_node_get_full_size (node))
g_error ("left a hole of %d bytes", offset2 - old_offset - gi_ir_node_get_full_size (node)); g_error ("left a hole of %d bytes", offset2 - old_offset - gi_ir_node_get_full_size (node));
} }
entry++; entry++;
} }
@ -572,7 +572,7 @@ gi_ir_module_build_typelib (GIIrModule *module)
if (!typelib) if (!typelib)
{ {
g_error ("error building typelib: %s", g_error ("error building typelib: %s",
error->message); error->message);
} }
g_hash_table_destroy (strings); g_hash_table_destroy (strings);

View File

@ -73,10 +73,10 @@ typedef enum
struct _GIIrNode struct _GIIrNode
{ {
GIIrNodeTypeId type; GIIrNodeTypeId type;
gchar *name; char *name;
GIIrModule *module; GIIrModule *module;
guint32 offset; /* Assigned as we build the typelib */ uint32_t offset; /* Assigned as we build the typelib */
GHashTable *attributes; GHashTable *attributes;
}; };
@ -85,25 +85,25 @@ struct _GIIrNodeXRef
{ {
GIIrNode node; GIIrNode node;
gchar *namespace; char *namespace;
}; };
struct _GIIrNodeFunction struct _GIIrNodeFunction
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gboolean is_varargs; /* Not in typelib yet */ uint8_t is_varargs : 1; /* Not in typelib yet */
gboolean is_method; uint8_t is_method : 1;
gboolean is_setter; uint8_t is_setter : 1;
gboolean is_getter; uint8_t is_getter : 1;
gboolean is_constructor; uint8_t is_constructor : 1;
gboolean wraps_vfunc; uint8_t wraps_vfunc : 1;
gboolean throws; uint8_t throws : 1;
gboolean instance_transfer_full; uint8_t instance_transfer_full : 1;
gchar *symbol; char *symbol;
char *property; char *property;
GIIrNodeParam *result; GIIrNodeParam *result;
@ -114,49 +114,49 @@ struct _GIIrNodeType
{ {
GIIrNode node; GIIrNode node;
gboolean is_pointer; uint8_t is_pointer : 1;
gboolean is_basic; uint8_t is_basic : 1;
gboolean is_array; uint8_t is_array : 1;
gboolean is_glist; uint8_t is_glist : 1;
gboolean is_gslist; uint8_t is_gslist : 1;
gboolean is_ghashtable; uint8_t is_ghashtable : 1;
gboolean is_interface; uint8_t is_interface : 1;
gboolean is_error; uint8_t is_error : 1;
gint tag; int tag;
gchar *unparsed; char *unparsed;
gboolean zero_terminated; uint8_t zero_terminated : 1;
gboolean has_length; uint8_t has_length : 1;
gint length; int length;
gboolean has_size; uint8_t has_size : 1;
gint size; int size;
gint array_type; int array_type;
GIIrNodeType *parameter_type1; GIIrNodeType *parameter_type1;
GIIrNodeType *parameter_type2; GIIrNodeType *parameter_type2;
gchar *giinterface; char *giinterface;
gchar **errors; char **errors;
}; };
struct _GIIrNodeParam struct _GIIrNodeParam
{ {
GIIrNode node; GIIrNode node;
gboolean in; uint8_t in : 1;
gboolean out; uint8_t out : 1;
gboolean caller_allocates; uint8_t caller_allocates : 1;
gboolean optional; uint8_t optional : 1;
gboolean retval; uint8_t retval : 1;
gboolean nullable; uint8_t nullable : 1;
gboolean skip; uint8_t skip : 1;
gboolean transfer; uint8_t transfer : 1;
gboolean shallow_transfer; uint8_t shallow_transfer : 1;
GIScopeType scope; GIScopeType scope : 3;
gint8 closure; int8_t closure;
gint8 destroy; int8_t destroy;
GIIrNodeType *type; GIIrNodeType *type;
}; };
@ -165,15 +165,15 @@ struct _GIIrNodeProperty
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gchar *name; char *name;
gboolean readable; uint8_t readable : 1;
gboolean writable; uint8_t writable : 1;
gboolean construct; uint8_t construct : 1;
gboolean construct_only; uint8_t construct_only : 1;
gboolean transfer; uint8_t transfer : 1;
gboolean shallow_transfer; uint8_t shallow_transfer : 1;
char *setter; char *setter;
char *getter; char *getter;
@ -185,21 +185,21 @@ struct _GIIrNodeSignal
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gboolean run_first; uint8_t run_first : 1;
gboolean run_last; uint8_t run_last : 1;
gboolean run_cleanup; uint8_t run_cleanup : 1;
gboolean no_recurse; uint8_t no_recurse : 1;
gboolean detailed; uint8_t detailed : 1;
gboolean action; uint8_t action : 1;
gboolean no_hooks; uint8_t no_hooks : 1;
gboolean instance_transfer_full; uint8_t instance_transfer_full : 1;
gboolean has_class_closure; uint8_t has_class_closure : 1;
gboolean true_stops_emit; uint8_t true_stops_emit : 1;
gint class_closure; int class_closure;
GList *parameters; GList *parameters;
GIIrNodeParam *result; GIIrNodeParam *result;
@ -209,30 +209,30 @@ struct _GIIrNodeVFunc
{ {
GIIrNode node; GIIrNode node;
gboolean is_varargs; /* Not in typelib yet */ uint8_t is_varargs : 1; /* Not in typelib yet */
gboolean must_chain_up; uint8_t must_chain_up : 1;
gboolean must_be_implemented; uint8_t must_be_implemented : 1;
gboolean must_not_be_implemented; uint8_t must_not_be_implemented : 1;
gboolean is_class_closure; uint8_t is_class_closure : 1;
gboolean throws; uint8_t throws : 1;
gboolean instance_transfer_full; uint8_t instance_transfer_full : 1;
char *invoker; char *invoker;
GList *parameters; GList *parameters;
GIIrNodeParam *result; GIIrNodeParam *result;
gint offset; int offset;
}; };
struct _GIIrNodeField struct _GIIrNodeField
{ {
GIIrNode node; GIIrNode node;
gboolean readable; uint8_t readable : 1;
gboolean writable; uint8_t writable : 1;
gint bits; int bits;
gint offset; int offset;
GIIrNodeFunction *callback; GIIrNodeFunction *callback;
GIIrNodeType *type; GIIrNodeType *type;
@ -242,27 +242,27 @@ struct _GIIrNodeInterface
{ {
GIIrNode node; GIIrNode node;
gboolean abstract; uint8_t abstract : 1;
gboolean deprecated; uint8_t deprecated : 1;
gboolean fundamental; uint8_t fundamental : 1;
gboolean final_; uint8_t final_ : 1;
gchar *gtype_name; char *gtype_name;
gchar *gtype_init; char *gtype_init;
gchar *ref_func; char *ref_func;
gchar *unref_func; char *unref_func;
gchar *set_value_func; char *set_value_func;
gchar *get_value_func; char *get_value_func;
gchar *parent; char *parent;
gchar *glib_type_struct; char *glib_type_struct;
GList *interfaces; GList *interfaces;
GList *prerequisites; GList *prerequisites;
gint alignment; gssize alignment;
gint size; size_t size;
GList *members; GList *members;
}; };
@ -271,32 +271,32 @@ struct _GIIrNodeValue
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gint64 value; int64_t value;
}; };
struct _GIIrNodeConstant struct _GIIrNodeConstant
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
GIIrNodeType *type; GIIrNodeType *type;
gchar *value; char *value;
}; };
struct _GIIrNodeEnum struct _GIIrNodeEnum
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gint storage_type; int storage_type;
gchar *gtype_name; char *gtype_name;
gchar *gtype_init; char *gtype_init;
gchar *error_domain; char *error_domain;
GList *values; GList *values;
GList *methods; GList *methods;
@ -306,13 +306,13 @@ struct _GIIrNodeBoxed
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gchar *gtype_name; char *gtype_name;
gchar *gtype_init; char *gtype_init;
gint alignment; gssize alignment;
gint size; size_t size;
GList *members; GList *members;
}; };
@ -321,21 +321,21 @@ struct _GIIrNodeStruct
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
gboolean disguised; uint8_t disguised : 1;
gboolean opaque; uint8_t opaque : 1;
gboolean pointer; uint8_t pointer : 1;
gboolean is_gtype_struct; uint8_t is_gtype_struct : 1;
gboolean foreign; uint8_t foreign : 1;
gchar *gtype_name; char *gtype_name;
gchar *gtype_init; char *gtype_init;
gchar *copy_func; char *copy_func;
gchar *free_func; char *free_func;
gint alignment; gssize alignment;
gint size; size_t size;
GList *members; GList *members;
}; };
@ -344,21 +344,21 @@ struct _GIIrNodeUnion
{ {
GIIrNode node; GIIrNode node;
gboolean deprecated; uint8_t deprecated : 1;
GList *members; GList *members;
GList *discriminators; GList *discriminators;
gchar *gtype_name; char *gtype_name;
gchar *gtype_init; char *gtype_init;
gchar *copy_func; char *copy_func;
gchar *free_func; char *free_func;
gint alignment; gssize alignment;
gint size; size_t size;
gint discriminator_offset; int discriminator_offset;
GIIrNodeType *discriminator_type; GIIrNodeType *discriminator_type;
}; };
@ -366,26 +366,26 @@ struct _GIIrNodeUnion
GIIrNode *gi_ir_node_new (GIIrNodeTypeId type, GIIrNode *gi_ir_node_new (GIIrNodeTypeId type,
GIIrModule *module); GIIrModule *module);
void gi_ir_node_free (GIIrNode *node); void gi_ir_node_free (GIIrNode *node);
guint32 gi_ir_node_get_size (GIIrNode *node); uint32_t gi_ir_node_get_size (GIIrNode *node);
guint32 gi_ir_node_get_full_size (GIIrNode *node); uint32_t gi_ir_node_get_full_size (GIIrNode *node);
void gi_ir_node_build_typelib (GIIrNode *node, void gi_ir_node_build_typelib (GIIrNode *node,
GIIrNode *parent, GIIrNode *parent,
GIIrTypelibBuild *build, GIIrTypelibBuild *build,
guint32 *offset, uint32_t *offset,
guint32 *offset2, uint32_t *offset2,
guint16 *count2); uint16_t *count2);
int gi_ir_node_cmp (GIIrNode *node, int gi_ir_node_cmp (GIIrNode *node,
GIIrNode *other); GIIrNode *other);
gboolean gi_ir_node_can_have_member (GIIrNode *node); gboolean gi_ir_node_can_have_member (GIIrNode *node);
void gi_ir_node_add_member (GIIrNode *node, void gi_ir_node_add_member (GIIrNode *node,
GIIrNodeFunction *member); GIIrNodeFunction *member);
guint32 gi_ir_write_string (const gchar *str, uint32_t gi_ir_write_string (const char *str,
GHashTable *strings, GHashTable *strings,
guchar *data, uint8_t *data,
guint32 *offset); uint32_t *offset);
const gchar * gi_ir_node_param_direction_string (GIIrNodeParam * node); const char * gi_ir_node_param_direction_string (GIIrNodeParam * node);
const gchar * gi_ir_node_type_to_string (GIIrNodeTypeId type); const char * gi_ir_node_type_to_string (GIIrNodeTypeId type);
GIIrNode *gi_ir_find_node (GIIrTypelibBuild *build, GIIrNode *gi_ir_find_node (GIIrTypelibBuild *build,
GIIrModule *module, GIIrModule *module,

File diff suppressed because it is too large Load Diff

View File

@ -54,7 +54,7 @@ typedef enum {
} Enum5; } Enum5;
typedef enum { typedef enum {
ENUM_6 = ((guint)G_MAXINT) + 1 /* compiler could use uint32 */ ENUM_6 = ((unsigned int)G_MAXINT) + 1 /* compiler could use uint32 */
} Enum6; } Enum6;
typedef enum { typedef enum {
@ -73,8 +73,8 @@ static void
compute_enum_storage_type (GIIrNodeEnum *enum_node) compute_enum_storage_type (GIIrNodeEnum *enum_node)
{ {
GList *l; GList *l;
gint64 max_value = 0; int64_t max_value = 0;
gint64 min_value = 0; int64_t min_value = 0;
int width; int width;
gboolean signed_type; gboolean signed_type;
@ -95,44 +95,44 @@ compute_enum_storage_type (GIIrNodeEnum *enum_node)
signed_type = TRUE; signed_type = TRUE;
if (min_value > -128 && max_value <= 127) if (min_value > -128 && max_value <= 127)
width = sizeof(Enum7); width = sizeof(Enum7);
else if (min_value >= G_MINSHORT && max_value <= G_MAXSHORT) else if (min_value >= G_MINSHORT && max_value <= G_MAXSHORT)
width = sizeof(Enum8); width = sizeof(Enum8);
else else
width = sizeof(Enum9); width = sizeof(Enum9);
} }
else else
{ {
if (max_value <= 127) if (max_value <= 127)
{ {
width = sizeof (Enum1); width = sizeof (Enum1);
signed_type = (gint64)(Enum1)(-1) < 0; signed_type = (int64_t)(Enum1)(-1) < 0;
} }
else if (max_value <= 255) else if (max_value <= 255)
{ {
width = sizeof (Enum2); width = sizeof (Enum2);
signed_type = (gint64)(Enum2)(-1) < 0; signed_type = (int64_t)(Enum2)(-1) < 0;
} }
else if (max_value <= G_MAXSHORT) else if (max_value <= G_MAXSHORT)
{ {
width = sizeof (Enum3); width = sizeof (Enum3);
signed_type = (gint64)(Enum3)(-1) < 0; signed_type = (int64_t)(Enum3)(-1) < 0;
} }
else if (max_value <= G_MAXUSHORT) else if (max_value <= G_MAXUSHORT)
{ {
width = sizeof (Enum4); width = sizeof (Enum4);
signed_type = (gint64)(Enum4)(-1) < 0; signed_type = (int64_t)(Enum4)(-1) < 0;
} }
else if (max_value <= G_MAXINT) else if (max_value <= G_MAXINT)
{ {
width = sizeof (Enum5); width = sizeof (Enum5);
signed_type = (gint64)(Enum5)(-1) < 0; signed_type = (int64_t)(Enum5)(-1) < 0;
} }
else else
{ {
width = sizeof (Enum6); width = sizeof (Enum6);
signed_type = (gint64)(Enum6)(-1) < 0; signed_type = (int64_t)(Enum6)(-1) < 0;
} }
} }
if (width == 1) if (width == 1)
@ -148,9 +148,9 @@ compute_enum_storage_type (GIIrNodeEnum *enum_node)
} }
static gboolean static gboolean
get_enum_size_alignment (GIIrNodeEnum *enum_node, get_enum_size_alignment (GIIrNodeEnum *enum_node,
gint *size, size_t *size,
gint *alignment) gssize *alignment)
{ {
ffi_type *type_ffi; ffi_type *type_ffi;
@ -176,7 +176,7 @@ get_enum_size_alignment (GIIrNodeEnum *enum_node,
break; break;
default: default:
g_error ("Unexpected enum storage type %s", g_error ("Unexpected enum storage type %s",
gi_type_tag_to_string (enum_node->storage_type)); gi_type_tag_to_string (enum_node->storage_type));
} }
*size = type_ffi->size; *size = type_ffi->size;
@ -188,8 +188,8 @@ get_enum_size_alignment (GIIrNodeEnum *enum_node,
static gboolean static gboolean
get_interface_size_alignment (GIIrTypelibBuild *build, get_interface_size_alignment (GIIrTypelibBuild *build,
GIIrNodeType *type, GIIrNodeType *type,
gint *size, size_t *size,
gint *alignment, gssize *alignment,
const char *who) const char *who)
{ {
GIIrNode *iface; GIIrNode *iface;
@ -209,53 +209,53 @@ get_interface_size_alignment (GIIrTypelibBuild *build,
{ {
case GI_IR_NODE_BOXED: case GI_IR_NODE_BOXED:
{ {
GIIrNodeBoxed *boxed = (GIIrNodeBoxed *)iface; GIIrNodeBoxed *boxed = (GIIrNodeBoxed *)iface;
*size = boxed->size; *size = boxed->size;
*alignment = boxed->alignment; *alignment = boxed->alignment;
break; break;
} }
case GI_IR_NODE_STRUCT: case GI_IR_NODE_STRUCT:
{ {
GIIrNodeStruct *struct_ = (GIIrNodeStruct *)iface; GIIrNodeStruct *struct_ = (GIIrNodeStruct *)iface;
*size = struct_->size; *size = struct_->size;
*alignment = struct_->alignment; *alignment = struct_->alignment;
break; break;
} }
case GI_IR_NODE_OBJECT: case GI_IR_NODE_OBJECT:
case GI_IR_NODE_INTERFACE: case GI_IR_NODE_INTERFACE:
{ {
GIIrNodeInterface *interface = (GIIrNodeInterface *)iface; GIIrNodeInterface *interface = (GIIrNodeInterface *)iface;
*size = interface->size; *size = interface->size;
*alignment = interface->alignment; *alignment = interface->alignment;
break; break;
} }
case GI_IR_NODE_UNION: case GI_IR_NODE_UNION:
{ {
GIIrNodeUnion *union_ = (GIIrNodeUnion *)iface; GIIrNodeUnion *union_ = (GIIrNodeUnion *)iface;
*size = union_->size; *size = union_->size;
*alignment = union_->alignment; *alignment = union_->alignment;
break; break;
} }
case GI_IR_NODE_ENUM: case GI_IR_NODE_ENUM:
case GI_IR_NODE_FLAGS: case GI_IR_NODE_FLAGS:
{ {
return get_enum_size_alignment ((GIIrNodeEnum *)iface, return get_enum_size_alignment ((GIIrNodeEnum *)iface,
size, alignment); size, alignment);
} }
case GI_IR_NODE_CALLBACK: case GI_IR_NODE_CALLBACK:
{ {
*size = ffi_type_pointer.size; *size = ffi_type_pointer.size;
*alignment = ffi_type_pointer.alignment; *alignment = ffi_type_pointer.alignment;
break; break;
} }
default: default:
{ {
g_warning ("%s has is not a pointer and is of type %s", g_warning ("%s has is not a pointer and is of type %s",
who, who,
gi_ir_node_type_to_string (iface->type)); gi_ir_node_type_to_string (iface->type));
*size = -1; *size = -1;
*alignment = -1; *alignment = -1;
break; break;
} }
} }
@ -265,8 +265,8 @@ get_interface_size_alignment (GIIrTypelibBuild *build,
static gboolean static gboolean
get_type_size_alignment (GIIrTypelibBuild *build, get_type_size_alignment (GIIrTypelibBuild *build,
GIIrNodeType *type, GIIrNodeType *type,
gint *size, size_t *size,
gint *alignment, gssize *alignment,
const char *who) const char *who)
{ {
ffi_type *type_ffi; ffi_type *type_ffi;
@ -277,7 +277,8 @@ get_type_size_alignment (GIIrTypelibBuild *build,
} }
else if (type->tag == GI_TYPE_TAG_ARRAY) else if (type->tag == GI_TYPE_TAG_ARRAY)
{ {
gint elt_size, elt_alignment; size_t elt_size;
gssize elt_alignment;
if (!type->has_size if (!type->has_size
|| !get_type_size_alignment(build, type->parameter_type1, || !get_type_size_alignment(build, type->parameter_type1,
@ -296,30 +297,30 @@ get_type_size_alignment (GIIrTypelibBuild *build,
else else
{ {
if (type->tag == GI_TYPE_TAG_INTERFACE) if (type->tag == GI_TYPE_TAG_INTERFACE)
{ {
return get_interface_size_alignment (build, type, size, alignment, who); return get_interface_size_alignment (build, type, size, alignment, who);
} }
else else
{ {
type_ffi = gi_type_tag_get_ffi_type (type->tag, type->is_pointer); type_ffi = gi_type_tag_get_ffi_type (type->tag, type->is_pointer);
if (type_ffi == &ffi_type_void) if (type_ffi == &ffi_type_void)
{ {
g_warning ("%s has void type", who); g_warning ("%s has void type", who);
*size = -1; *size = -1;
*alignment = -1; *alignment = -1;
return FALSE; return FALSE;
} }
else if (type_ffi == &ffi_type_pointer) else if (type_ffi == &ffi_type_pointer)
{ {
g_warning ("%s has is not a pointer and is of type %s", g_warning ("%s has is not a pointer and is of type %s",
who, who,
gi_type_tag_to_string (type->tag)); gi_type_tag_to_string (type->tag));
*size = -1; *size = -1;
*alignment = -1; *alignment = -1;
return FALSE; return FALSE;
} }
} }
} }
g_assert (type_ffi); g_assert (type_ffi);
@ -333,11 +334,11 @@ static gboolean
get_field_size_alignment (GIIrTypelibBuild *build, get_field_size_alignment (GIIrTypelibBuild *build,
GIIrNodeField *field, GIIrNodeField *field,
GIIrNode *parent_node, GIIrNode *parent_node,
gint *size, size_t *size,
gint *alignment) gssize *alignment)
{ {
GIIrModule *module = build->module; GIIrModule *module = build->module;
gchar *who; char *who;
gboolean success; gboolean success;
who = g_strdup_printf ("field %s.%s.%s", module->name, parent_node->name, ((GIIrNode *)field)->name); who = g_strdup_printf ("field %s.%s.%s", module->name, parent_node->name, ((GIIrNode *)field)->name);
@ -361,8 +362,8 @@ static gboolean
compute_struct_field_offsets (GIIrTypelibBuild *build, compute_struct_field_offsets (GIIrTypelibBuild *build,
GIIrNode *node, GIIrNode *node,
GList *members, GList *members,
gint *size_out, size_t *size_out,
gint *alignment_out) gssize *alignment_out)
{ {
int size = 0; int size = 0;
int alignment = 1; int alignment = 1;
@ -376,35 +377,35 @@ compute_struct_field_offsets (GIIrTypelibBuild *build,
GIIrNode *member = (GIIrNode *)l->data; GIIrNode *member = (GIIrNode *)l->data;
if (member->type == GI_IR_NODE_FIELD) if (member->type == GI_IR_NODE_FIELD)
{ {
GIIrNodeField *field = (GIIrNodeField *)member; GIIrNodeField *field = (GIIrNodeField *)member;
if (!have_error) if (!have_error)
{ {
int member_size; size_t member_size;
int member_alignment; gssize member_alignment;
if (get_field_size_alignment (build, field, node, if (get_field_size_alignment (build, field, node,
&member_size, &member_alignment)) &member_size, &member_alignment))
{ {
size = GI_ALIGN (size, member_alignment); size = GI_ALIGN (size, member_alignment);
alignment = MAX (alignment, member_alignment); alignment = MAX (alignment, member_alignment);
field->offset = size; field->offset = size;
size += member_size; size += member_size;
} }
else else
have_error = TRUE; have_error = TRUE;
} }
if (have_error) if (have_error)
field->offset = -1; field->offset = -1;
} }
else if (member->type == GI_IR_NODE_CALLBACK) else if (member->type == GI_IR_NODE_CALLBACK)
{ {
size = GI_ALIGN (size, ffi_type_pointer.alignment); size = GI_ALIGN (size, ffi_type_pointer.alignment);
alignment = MAX (alignment, ffi_type_pointer.alignment); alignment = MAX (alignment, ffi_type_pointer.alignment);
size += ffi_type_pointer.size; size += ffi_type_pointer.size;
} }
} }
/* Structs are tail-padded out to a multiple of their alignment */ /* Structs are tail-padded out to a multiple of their alignment */
@ -428,10 +429,10 @@ static gboolean
compute_union_field_offsets (GIIrTypelibBuild *build, compute_union_field_offsets (GIIrTypelibBuild *build,
GIIrNode *node, GIIrNode *node,
GList *members, GList *members,
gint *size_out, size_t *size_out,
gint *alignment_out) gssize *alignment_out)
{ {
int size = 0; size_t size = 0;
int alignment = 1; int alignment = 1;
GList *l; GList *l;
gboolean have_error = FALSE; gboolean have_error = FALSE;
@ -443,24 +444,24 @@ compute_union_field_offsets (GIIrTypelibBuild *build,
GIIrNode *member = (GIIrNode *)l->data; GIIrNode *member = (GIIrNode *)l->data;
if (member->type == GI_IR_NODE_FIELD) if (member->type == GI_IR_NODE_FIELD)
{ {
GIIrNodeField *field = (GIIrNodeField *)member; GIIrNodeField *field = (GIIrNodeField *)member;
if (!have_error) if (!have_error)
{ {
int member_size; size_t member_size;
int member_alignment; gssize member_alignment;
if (get_field_size_alignment (build,field, node, if (get_field_size_alignment (build,field, node,
&member_size, &member_alignment)) &member_size, &member_alignment))
{ {
size = MAX (size, member_size); size = MAX (size, member_size);
alignment = MAX (alignment, member_alignment); alignment = MAX (alignment, member_alignment);
} }
else else
have_error = TRUE; have_error = TRUE;
} }
} }
} }
/* Unions are tail-padded out to a multiple of their alignment */ /* Unions are tail-padded out to a multiple of their alignment */
@ -483,7 +484,7 @@ compute_union_field_offsets (GIIrTypelibBuild *build,
static gboolean static gboolean
check_needs_computation (GIIrTypelibBuild *build, check_needs_computation (GIIrTypelibBuild *build,
GIIrNode *node, GIIrNode *node,
gint alignment) int alignment)
{ {
GIIrModule *module = build->module; GIIrModule *module = build->module;
/* /*
@ -495,7 +496,7 @@ check_needs_computation (GIIrTypelibBuild *build,
if (alignment == -2) if (alignment == -2)
{ {
g_warning ("Recursion encountered when computing the size of %s.%s", g_warning ("Recursion encountered when computing the size of %s.%s",
module->name, node->name); module->name, node->name);
} }
return alignment == 0; return alignment == 0;
@ -529,60 +530,60 @@ gi_ir_node_compute_offsets (GIIrTypelibBuild *build,
{ {
case GI_IR_NODE_BOXED: case GI_IR_NODE_BOXED:
{ {
GIIrNodeBoxed *boxed = (GIIrNodeBoxed *)node; GIIrNodeBoxed *boxed = (GIIrNodeBoxed *)node;
if (!check_needs_computation (build, node, boxed->alignment)) if (!check_needs_computation (build, node, boxed->alignment))
return; return;
compute_struct_field_offsets (build, node, boxed->members, compute_struct_field_offsets (build, node, boxed->members,
&boxed->size, &boxed->alignment); &boxed->size, &boxed->alignment);
break; break;
} }
case GI_IR_NODE_STRUCT: case GI_IR_NODE_STRUCT:
{ {
GIIrNodeStruct *struct_ = (GIIrNodeStruct *)node; GIIrNodeStruct *struct_ = (GIIrNodeStruct *)node;
if (!check_needs_computation (build, node, struct_->alignment)) if (!check_needs_computation (build, node, struct_->alignment))
return; return;
compute_struct_field_offsets (build, node, struct_->members, compute_struct_field_offsets (build, node, struct_->members,
&struct_->size, &struct_->alignment); &struct_->size, &struct_->alignment);
break; break;
} }
case GI_IR_NODE_OBJECT: case GI_IR_NODE_OBJECT:
case GI_IR_NODE_INTERFACE: case GI_IR_NODE_INTERFACE:
{ {
GIIrNodeInterface *iface = (GIIrNodeInterface *)node; GIIrNodeInterface *iface = (GIIrNodeInterface *)node;
if (!check_needs_computation (build, node, iface->alignment)) if (!check_needs_computation (build, node, iface->alignment))
return; return;
compute_struct_field_offsets (build, node, iface->members, compute_struct_field_offsets (build, node, iface->members,
&iface->size, &iface->alignment); &iface->size, &iface->alignment);
break; break;
} }
case GI_IR_NODE_UNION: case GI_IR_NODE_UNION:
{ {
GIIrNodeUnion *union_ = (GIIrNodeUnion *)node; GIIrNodeUnion *union_ = (GIIrNodeUnion *)node;
if (!check_needs_computation (build, node, union_->alignment)) if (!check_needs_computation (build, node, union_->alignment))
return; return;
compute_union_field_offsets (build, (GIIrNode*)union_, union_->members, compute_union_field_offsets (build, (GIIrNode*)union_, union_->members,
&union_->size, &union_->alignment); &union_->size, &union_->alignment);
break; break;
} }
case GI_IR_NODE_ENUM: case GI_IR_NODE_ENUM:
case GI_IR_NODE_FLAGS: case GI_IR_NODE_FLAGS:
{ {
GIIrNodeEnum *enum_ = (GIIrNodeEnum *)node; GIIrNodeEnum *enum_ = (GIIrNodeEnum *)node;
if (enum_->storage_type != GI_TYPE_TAG_VOID) /* already done */ if (enum_->storage_type != GI_TYPE_TAG_VOID) /* already done */
return; return;
compute_enum_storage_type (enum_); compute_enum_storage_type (enum_);
break; break;
} }
default: default:
break; break;

View File

@ -34,16 +34,16 @@ typedef struct _GIIrParser GIIrParser;
GIIrParser *gi_ir_parser_new (void); GIIrParser *gi_ir_parser_new (void);
void gi_ir_parser_free (GIIrParser *parser); void gi_ir_parser_free (GIIrParser *parser);
void gi_ir_parser_set_includes (GIIrParser *parser, void gi_ir_parser_set_includes (GIIrParser *parser,
const gchar *const *includes); const char *const *includes);
GIIrModule *gi_ir_parser_parse_string (GIIrParser *parser, GIIrModule *gi_ir_parser_parse_string (GIIrParser *parser,
const gchar *namespace, const char *namespace,
const gchar *filename, const char *filename,
const gchar *buffer, const char *buffer,
gssize length, gssize length,
GError **error); GError **error);
GIIrModule *gi_ir_parser_parse_file (GIIrParser *parser, GIIrModule *gi_ir_parser_parse_file (GIIrParser *parser,
const gchar *filename, const char *filename,
GError **error); GError **error);
G_END_DECLS G_END_DECLS

File diff suppressed because it is too large Load Diff

View File

@ -45,7 +45,7 @@ typedef struct {
typedef struct { typedef struct {
char *name; char *name;
guint has_children : 1; unsigned has_children : 1;
} XmlElement; } XmlElement;
static XmlElement * static XmlElement *
@ -169,13 +169,13 @@ check_unresolved (GIBaseInfo *info)
return; return;
g_critical ("Found unresolved type '%s' '%s'", g_critical ("Found unresolved type '%s' '%s'",
gi_base_info_get_name (info), gi_base_info_get_namespace (info)); gi_base_info_get_name (info), gi_base_info_get_namespace (info));
} }
static void static void
write_type_name (const gchar *ns, write_type_name (const char *ns,
GIBaseInfo *info, GIBaseInfo *info,
Xml *file) Xml *file)
{ {
if (strcmp (ns, gi_base_info_get_namespace (info)) != 0) if (strcmp (ns, gi_base_info_get_namespace (info)) != 0)
xml_printf (file, "%s.", gi_base_info_get_namespace (info)); xml_printf (file, "%s.", gi_base_info_get_namespace (info));
@ -184,10 +184,10 @@ write_type_name (const gchar *ns,
} }
static void static void
write_type_name_attribute (const gchar *ns, write_type_name_attribute (const char *ns,
GIBaseInfo *info, GIBaseInfo *info,
const char *attr_name, const char *attr_name,
Xml *file) Xml *file)
{ {
xml_printf (file, " %s=\"", attr_name); xml_printf (file, " %s=\"", attr_name);
write_type_name (ns, info, file); write_type_name (ns, info, file);
@ -215,11 +215,11 @@ write_ownership_transfer (GITransfer transfer,
} }
static void static void
write_type_info (const gchar *ns, write_type_info (const char *ns,
GITypeInfo *info, GITypeInfo *info,
Xml *file) Xml *file)
{ {
gint tag; int tag;
GITypeInfo *type; GITypeInfo *type;
gboolean is_pointer; gboolean is_pointer;
@ -244,7 +244,7 @@ write_type_info (const gchar *ns,
} }
else if (tag == GI_TYPE_TAG_ARRAY) else if (tag == GI_TYPE_TAG_ARRAY)
{ {
gint length; gssize length;
gssize size; gssize size;
const char *name = NULL; const char *name = NULL;
@ -273,14 +273,14 @@ write_type_info (const gchar *ns,
length = gi_type_info_get_array_length_index (info); length = gi_type_info_get_array_length_index (info);
if (length >= 0) if (length >= 0)
xml_printf (file, " length=\"%d\"", length); xml_printf (file, " length=\"%" G_GSSIZE_FORMAT "\"", length);
size = gi_type_info_get_array_fixed_size (info); size = gi_type_info_get_array_fixed_size (info);
if (size >= 0) if (size >= 0)
xml_printf (file, " fixed-size=\"%" G_GSSIZE_FORMAT "\"", size); xml_printf (file, " fixed-size=\"%" G_GSSIZE_FORMAT "\"", size);
if (gi_type_info_is_zero_terminated (info)) if (gi_type_info_is_zero_terminated (info))
xml_printf (file, " zero-terminated=\"1\""); xml_printf (file, " zero-terminated=\"1\"");
write_type_info (ns, type, file); write_type_info (ns, type, file);
@ -302,10 +302,10 @@ write_type_info (const gchar *ns,
xml_printf (file, " name=\"GLib.List\""); xml_printf (file, " name=\"GLib.List\"");
type = gi_type_info_get_param_type (info, 0); type = gi_type_info_get_param_type (info, 0);
if (type) if (type)
{ {
write_type_info (ns, type, file); write_type_info (ns, type, file);
gi_base_info_unref ((GIBaseInfo *)type); gi_base_info_unref ((GIBaseInfo *)type);
} }
xml_end_element (file, "type"); xml_end_element (file, "type");
} }
else if (tag == GI_TYPE_TAG_GSLIST) else if (tag == GI_TYPE_TAG_GSLIST)
@ -314,10 +314,10 @@ write_type_info (const gchar *ns,
xml_printf (file, " name=\"GLib.SList\""); xml_printf (file, " name=\"GLib.SList\"");
type = gi_type_info_get_param_type (info, 0); type = gi_type_info_get_param_type (info, 0);
if (type) if (type)
{ {
write_type_info (ns, type, file); write_type_info (ns, type, file);
gi_base_info_unref ((GIBaseInfo *)type); gi_base_info_unref ((GIBaseInfo *)type);
} }
xml_end_element (file, "type"); xml_end_element (file, "type");
} }
else if (tag == GI_TYPE_TAG_GHASH) else if (tag == GI_TYPE_TAG_GHASH)
@ -326,13 +326,13 @@ write_type_info (const gchar *ns,
xml_printf (file, " name=\"GLib.HashTable\""); xml_printf (file, " name=\"GLib.HashTable\"");
type = gi_type_info_get_param_type (info, 0); type = gi_type_info_get_param_type (info, 0);
if (type) if (type)
{ {
write_type_info (ns, type, file); write_type_info (ns, type, file);
gi_base_info_unref ((GIBaseInfo *)type); gi_base_info_unref ((GIBaseInfo *)type);
type = gi_type_info_get_param_type (info, 1); type = gi_type_info_get_param_type (info, 1);
write_type_info (ns, type, file); write_type_info (ns, type, file);
gi_base_info_unref ((GIBaseInfo *)type); gi_base_info_unref ((GIBaseInfo *)type);
} }
xml_end_element (file, "type"); xml_end_element (file, "type");
} }
else if (tag == GI_TYPE_TAG_ERROR) else if (tag == GI_TYPE_TAG_ERROR)
@ -379,26 +379,26 @@ write_return_value_attributes (Xml *file,
} }
static void static void
write_constant_value (const gchar *ns, write_constant_value (const char *ns,
GITypeInfo *info, GITypeInfo *info,
GIArgument *argument, GIArgument *argument,
Xml *file); Xml *file);
static void static void
write_callback_info (const gchar *ns, write_callback_info (const char *ns,
GICallbackInfo *info, GICallbackInfo *info,
Xml *file); Xml *file);
static void static void
write_field_info (const gchar *ns, write_field_info (const char *ns,
GIFieldInfo *info, GIFieldInfo *info,
GIConstantInfo *branch, GIConstantInfo *branch,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
GIFieldInfoFlags flags; GIFieldInfoFlags flags;
gint size; size_t size;
gint offset; size_t offset;
GITypeInfo *type; GITypeInfo *type;
GIBaseInfo *interface; GIBaseInfo *interface;
GIArgument value; GIArgument value;
@ -420,7 +420,7 @@ write_field_info (const gchar *ns,
xml_printf (file, " writable=\"1\""); xml_printf (file, " writable=\"1\"");
if (size) if (size)
xml_printf (file, " bits=\"%d\"", size); xml_printf (file, " bits=\"%zu\"", size);
write_attributes (file, (GIBaseInfo*) info); write_attributes (file, (GIBaseInfo*) info);
@ -438,8 +438,7 @@ write_field_info (const gchar *ns,
if (file->show_all) if (file->show_all)
{ {
if (offset >= 0) xml_printf (file, "offset=\"%zu\"", offset);
xml_printf (file, "offset=\"%d\"", offset);
} }
interface = gi_type_info_get_interface (type); interface = gi_type_info_get_interface (type);
@ -457,9 +456,9 @@ write_field_info (const gchar *ns,
} }
static void static void
write_callable_info (const gchar *ns, write_callable_info (const char *ns,
GICallableInfo *info, GICallableInfo *info,
Xml *file) Xml *file)
{ {
GITypeInfo *type; GITypeInfo *type;
@ -490,7 +489,7 @@ write_callable_info (const gchar *ns,
return; return;
xml_start_element (file, "parameters"); xml_start_element (file, "parameters");
for (guint i = 0; i < gi_callable_info_get_n_args (info); i++) for (unsigned int i = 0; i < gi_callable_info_get_n_args (info); i++)
{ {
GIArgInfo *arg = gi_callable_info_get_arg (info, i); GIArgInfo *arg = gi_callable_info_get_arg (info, i);
@ -501,28 +500,28 @@ write_callable_info (const gchar *ns,
write_ownership_transfer (gi_arg_info_get_ownership_transfer (arg), file); write_ownership_transfer (gi_arg_info_get_ownership_transfer (arg), file);
switch (gi_arg_info_get_direction (arg)) switch (gi_arg_info_get_direction (arg))
{ {
case GI_DIRECTION_IN: case GI_DIRECTION_IN:
break; break;
case GI_DIRECTION_OUT: case GI_DIRECTION_OUT:
xml_printf (file, " direction=\"out\" caller-allocates=\"%s\"", xml_printf (file, " direction=\"out\" caller-allocates=\"%s\"",
gi_arg_info_is_caller_allocates (arg) ? "1" : "0"); gi_arg_info_is_caller_allocates (arg) ? "1" : "0");
break; break;
case GI_DIRECTION_INOUT: case GI_DIRECTION_INOUT:
xml_printf (file, " direction=\"inout\""); xml_printf (file, " direction=\"inout\"");
break; break;
default: default:
g_assert_not_reached (); g_assert_not_reached ();
} }
if (gi_arg_info_may_be_null (arg)) if (gi_arg_info_may_be_null (arg))
xml_printf (file, " allow-none=\"1\""); xml_printf (file, " allow-none=\"1\"");
if (gi_arg_info_is_return_value (arg)) if (gi_arg_info_is_return_value (arg))
xml_printf (file, " retval=\"1\""); xml_printf (file, " retval=\"1\"");
if (gi_arg_info_is_optional (arg)) if (gi_arg_info_is_optional (arg))
xml_printf (file, " optional=\"1\""); xml_printf (file, " optional=\"1\"");
switch (gi_arg_info_get_scope (arg)) switch (gi_arg_info_get_scope (arg))
{ {
@ -545,10 +544,12 @@ write_callable_info (const gchar *ns,
} }
if (gi_arg_info_get_closure_index (arg) >= 0) if (gi_arg_info_get_closure_index (arg) >= 0)
xml_printf (file, " closure=\"%d\"", gi_arg_info_get_closure_index (arg)); xml_printf (file, " closure=\"%" G_GSSIZE_FORMAT "\"",
gi_arg_info_get_closure_index (arg));
if (gi_arg_info_get_destroy_index (arg) >= 0) if (gi_arg_info_get_destroy_index (arg) >= 0)
xml_printf (file, " destroy=\"%d\"", gi_arg_info_get_destroy_index (arg)); xml_printf (file, " destroy=\"%" G_GSSIZE_FORMAT "\"",
gi_arg_info_get_destroy_index (arg));
if (gi_arg_info_is_skip (arg)) if (gi_arg_info_is_skip (arg))
xml_printf (file, " skip=\"1\""); xml_printf (file, " skip=\"1\"");
@ -568,14 +569,14 @@ write_callable_info (const gchar *ns,
} }
static void static void
write_function_info (const gchar *ns, write_function_info (const char *ns,
GIFunctionInfo *info, GIFunctionInfo *info,
Xml *file) Xml *file)
{ {
GIFunctionInfoFlags flags; GIFunctionInfoFlags flags;
const gchar *tag; const char *tag;
const gchar *name; const char *name;
const gchar *symbol; const char *symbol;
gboolean deprecated; gboolean deprecated;
flags = gi_function_info_get_flags (info); flags = gi_function_info_get_flags (info);
@ -619,11 +620,11 @@ write_function_info (const gchar *ns,
} }
static void static void
write_callback_info (const gchar *ns, write_callback_info (const char *ns,
GICallbackInfo *info, GICallbackInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
gboolean deprecated; gboolean deprecated;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
@ -640,19 +641,19 @@ write_callback_info (const gchar *ns,
} }
static void static void
write_struct_info (const gchar *ns, write_struct_info (const char *ns,
GIStructInfo *info, GIStructInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
const gchar *type_name; const char *type_name;
const gchar *type_init; const char *type_init;
const gchar *func; const char *func;
gboolean deprecated; gboolean deprecated;
gboolean is_gtype_struct; gboolean is_gtype_struct;
gboolean foreign; gboolean foreign;
gint size; size_t size;
guint n_elts; unsigned int n_elts;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
deprecated = gi_base_info_is_deprecated ((GIBaseInfo *)info); deprecated = gi_base_info_is_deprecated ((GIBaseInfo *)info);
@ -692,8 +693,8 @@ write_struct_info (const gchar *ns,
write_attributes (file, (GIBaseInfo*) info); write_attributes (file, (GIBaseInfo*) info);
size = gi_struct_info_get_size (info); size = gi_struct_info_get_size (info);
if (file->show_all && size >= 0) if (file->show_all)
xml_printf (file, " size=\"%d\"", size); xml_printf (file, " size=\"%zu\"", size);
foreign = gi_struct_info_is_foreign (info); foreign = gi_struct_info_is_foreign (info);
if (foreign) if (foreign)
@ -702,19 +703,19 @@ write_struct_info (const gchar *ns,
n_elts = gi_struct_info_get_n_fields (info) + gi_struct_info_get_n_methods (info); n_elts = gi_struct_info_get_n_fields (info) + gi_struct_info_get_n_methods (info);
if (n_elts > 0) if (n_elts > 0)
{ {
for (guint i = 0; i < gi_struct_info_get_n_fields (info); i++) for (unsigned int i = 0; i < gi_struct_info_get_n_fields (info); i++)
{ {
GIFieldInfo *field = gi_struct_info_get_field (info, i); GIFieldInfo *field = gi_struct_info_get_field (info, i);
write_field_info (ns, field, NULL, file); write_field_info (ns, field, NULL, file);
gi_base_info_unref ((GIBaseInfo *)field); gi_base_info_unref ((GIBaseInfo *)field);
} }
for (guint i = 0; i < gi_struct_info_get_n_methods (info); i++) for (unsigned int i = 0; i < gi_struct_info_get_n_methods (info); i++)
{ {
GIFunctionInfo *function = gi_struct_info_get_method (info, i); GIFunctionInfo *function = gi_struct_info_get_method (info, i);
write_function_info (ns, function, file); write_function_info (ns, function, file);
gi_base_info_unref ((GIBaseInfo *)function); gi_base_info_unref ((GIBaseInfo *)function);
} }
} }
@ -722,13 +723,13 @@ write_struct_info (const gchar *ns,
} }
static void static void
write_value_info (const gchar *ns, write_value_info (const char *ns,
GIValueInfo *info, GIValueInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
gint64 value; int64_t value;
gchar *value_str; char *value_str;
gboolean deprecated; gboolean deprecated;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
@ -749,10 +750,10 @@ write_value_info (const gchar *ns,
} }
static void static void
write_constant_value (const gchar *ns, write_constant_value (const char *ns,
GITypeInfo *type, GITypeInfo *type,
GIArgument *value, GIArgument *value,
Xml *file) Xml *file)
{ {
switch (gi_type_info_get_tag (type)) switch (gi_type_info_get_tag (type))
{ {
@ -799,12 +800,12 @@ write_constant_value (const gchar *ns,
} }
static void static void
write_constant_info (const gchar *ns, write_constant_info (const char *ns,
GIConstantInfo *info, GIConstantInfo *info,
Xml *file) Xml *file)
{ {
GITypeInfo *type; GITypeInfo *type;
const gchar *name; const char *name;
GIArgument value; GIArgument value;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
@ -830,14 +831,14 @@ write_constant_info (const gchar *ns,
static void static void
write_enum_info (const gchar *ns, write_enum_info (const char *ns,
GIEnumInfo *info, GIEnumInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
const gchar *type_name; const char *type_name;
const gchar *type_init; const char *type_init;
const gchar *error_domain; const char *error_domain;
gboolean deprecated; gboolean deprecated;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
@ -863,7 +864,7 @@ write_enum_info (const gchar *ns,
write_attributes (file, (GIBaseInfo*) info); write_attributes (file, (GIBaseInfo*) info);
for (guint i = 0; i < gi_enum_info_get_n_values (info); i++) for (unsigned int i = 0; i < gi_enum_info_get_n_values (info); i++)
{ {
GIValueInfo *value = gi_enum_info_get_value (info, i); GIValueInfo *value = gi_enum_info_get_value (info, i);
write_value_info (ns, value, file); write_value_info (ns, value, file);
@ -874,12 +875,12 @@ write_enum_info (const gchar *ns,
} }
static void static void
write_signal_info (const gchar *ns, write_signal_info (const char *ns,
GISignalInfo *info, GISignalInfo *info,
Xml *file) Xml *file)
{ {
GSignalFlags flags; GSignalFlags flags;
const gchar *name; const char *name;
gboolean deprecated; gboolean deprecated;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
@ -917,15 +918,15 @@ write_signal_info (const gchar *ns,
} }
static void static void
write_vfunc_info (const gchar *ns, write_vfunc_info (const char *ns,
GIVFuncInfo *info, GIVFuncInfo *info,
Xml *file) Xml *file)
{ {
GIVFuncInfoFlags flags; GIVFuncInfoFlags flags;
const gchar *name; const char *name;
GIFunctionInfo *invoker; GIFunctionInfo *invoker;
gboolean deprecated; gboolean deprecated;
gint offset; size_t offset;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
flags = gi_vfunc_info_get_flags (info); flags = gi_vfunc_info_get_flags (info);
@ -947,7 +948,7 @@ write_vfunc_info (const gchar *ns,
else if (flags & GI_VFUNC_MUST_NOT_OVERRIDE) else if (flags & GI_VFUNC_MUST_NOT_OVERRIDE)
xml_printf (file, " override=\"never\""); xml_printf (file, " override=\"never\"");
xml_printf (file, " offset=\"%d\"", offset); xml_printf (file, " offset=\"%zu\"", offset);
if (invoker) if (invoker)
{ {
@ -961,12 +962,12 @@ write_vfunc_info (const gchar *ns,
} }
static void static void
write_property_info (const gchar *ns, write_property_info (const char *ns,
GIPropertyInfo *info, GIPropertyInfo *info,
Xml *file) Xml *file)
{ {
GParamFlags flags; GParamFlags flags;
const gchar *name; const char *name;
gboolean deprecated; gboolean deprecated;
GITypeInfo *type; GITypeInfo *type;
@ -1026,14 +1027,14 @@ write_property_info (const gchar *ns,
} }
static void static void
write_object_info (const gchar *ns, write_object_info (const char *ns,
GIObjectInfo *info, GIObjectInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
const gchar *type_name; const char *type_name;
const gchar *type_init; const char *type_init;
const gchar *func; const char *func;
gboolean deprecated; gboolean deprecated;
gboolean is_abstract; gboolean is_abstract;
gboolean is_fundamental; gboolean is_fundamental;
@ -1100,52 +1101,52 @@ write_object_info (const gchar *ns,
if (gi_object_info_get_n_interfaces (info) > 0) if (gi_object_info_get_n_interfaces (info) > 0)
{ {
for (guint i = 0; i < gi_object_info_get_n_interfaces (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_interfaces (info); i++)
{ {
GIInterfaceInfo *imp = gi_object_info_get_interface (info, i); GIInterfaceInfo *imp = gi_object_info_get_interface (info, i);
xml_start_element (file, "implements"); xml_start_element (file, "implements");
write_type_name_attribute (ns, (GIBaseInfo *)imp, "name", file); write_type_name_attribute (ns, (GIBaseInfo *)imp, "name", file);
xml_end_element (file, "implements"); xml_end_element (file, "implements");
gi_base_info_unref ((GIBaseInfo*)imp); gi_base_info_unref ((GIBaseInfo*)imp);
} }
} }
for (guint i = 0; i < gi_object_info_get_n_fields (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_fields (info); i++)
{ {
GIFieldInfo *field = gi_object_info_get_field (info, i); GIFieldInfo *field = gi_object_info_get_field (info, i);
write_field_info (ns, field, NULL, file); write_field_info (ns, field, NULL, file);
gi_base_info_unref ((GIBaseInfo *)field); gi_base_info_unref ((GIBaseInfo *)field);
} }
for (guint i = 0; i < gi_object_info_get_n_methods (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_methods (info); i++)
{ {
GIFunctionInfo *function = gi_object_info_get_method (info, i); GIFunctionInfo *function = gi_object_info_get_method (info, i);
write_function_info (ns, function, file); write_function_info (ns, function, file);
gi_base_info_unref ((GIBaseInfo *)function); gi_base_info_unref ((GIBaseInfo *)function);
} }
for (guint i = 0; i < gi_object_info_get_n_properties (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_properties (info); i++)
{ {
GIPropertyInfo *prop = gi_object_info_get_property (info, i); GIPropertyInfo *prop = gi_object_info_get_property (info, i);
write_property_info (ns, prop, file); write_property_info (ns, prop, file);
gi_base_info_unref ((GIBaseInfo *)prop); gi_base_info_unref ((GIBaseInfo *)prop);
} }
for (guint i = 0; i < gi_object_info_get_n_signals (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_signals (info); i++)
{ {
GISignalInfo *signal = gi_object_info_get_signal (info, i); GISignalInfo *signal = gi_object_info_get_signal (info, i);
write_signal_info (ns, signal, file); write_signal_info (ns, signal, file);
gi_base_info_unref ((GIBaseInfo *)signal); gi_base_info_unref ((GIBaseInfo *)signal);
} }
for (guint i = 0; i < gi_object_info_get_n_vfuncs (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_vfuncs (info); i++)
{ {
GIVFuncInfo *vfunc = gi_object_info_get_vfunc (info, i); GIVFuncInfo *vfunc = gi_object_info_get_vfunc (info, i);
write_vfunc_info (ns, vfunc, file); write_vfunc_info (ns, vfunc, file);
gi_base_info_unref ((GIBaseInfo *)vfunc); gi_base_info_unref ((GIBaseInfo *)vfunc);
} }
for (guint i = 0; i < gi_object_info_get_n_constants (info); i++) for (unsigned int i = 0; i < gi_object_info_get_n_constants (info); i++)
{ {
GIConstantInfo *constant = gi_object_info_get_constant (info, i); GIConstantInfo *constant = gi_object_info_get_constant (info, i);
write_constant_info (ns, constant, file); write_constant_info (ns, constant, file);
@ -1156,13 +1157,13 @@ write_object_info (const gchar *ns,
} }
static void static void
write_interface_info (const gchar *ns, write_interface_info (const char *ns,
GIInterfaceInfo *info, GIInterfaceInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
const gchar *type_name; const char *type_name;
const gchar *type_init; const char *type_init;
GIStructInfo *class_struct; GIStructInfo *class_struct;
gboolean deprecated; gboolean deprecated;
@ -1173,7 +1174,7 @@ write_interface_info (const gchar *ns,
type_init = gi_registered_type_info_get_type_init_function_name ((GIRegisteredTypeInfo*)info); type_init = gi_registered_type_info_get_type_init_function_name ((GIRegisteredTypeInfo*)info);
xml_start_element (file, "interface"); xml_start_element (file, "interface");
xml_printf (file, " name=\"%s\" glib:type-name=\"%s\" glib:get-type=\"%s\"", xml_printf (file, " name=\"%s\" glib:type-name=\"%s\" glib:get-type=\"%s\"",
name, type_name, type_init); name, type_name, type_init);
class_struct = gi_interface_info_get_iface_struct (info); class_struct = gi_interface_info_get_iface_struct (info);
if (class_struct) if (class_struct)
@ -1189,47 +1190,47 @@ write_interface_info (const gchar *ns,
if (gi_interface_info_get_n_prerequisites (info) > 0) if (gi_interface_info_get_n_prerequisites (info) > 0)
{ {
for (guint i = 0; i < gi_interface_info_get_n_prerequisites (info); i++) for (unsigned int i = 0; i < gi_interface_info_get_n_prerequisites (info); i++)
{ {
GIBaseInfo *req = gi_interface_info_get_prerequisite (info, i); GIBaseInfo *req = gi_interface_info_get_prerequisite (info, i);
xml_start_element (file, "prerequisite"); xml_start_element (file, "prerequisite");
write_type_name_attribute (ns, req, "name", file); write_type_name_attribute (ns, req, "name", file);
xml_end_element_unchecked (file); xml_end_element_unchecked (file);
gi_base_info_unref (req); gi_base_info_unref (req);
} }
} }
for (guint i = 0; i < gi_interface_info_get_n_methods (info); i++) for (unsigned int i = 0; i < gi_interface_info_get_n_methods (info); i++)
{ {
GIFunctionInfo *function = gi_interface_info_get_method (info, i); GIFunctionInfo *function = gi_interface_info_get_method (info, i);
write_function_info (ns, function, file); write_function_info (ns, function, file);
gi_base_info_unref ((GIBaseInfo *)function); gi_base_info_unref ((GIBaseInfo *)function);
} }
for (guint i = 0; i < gi_interface_info_get_n_properties (info); i++) for (unsigned int i = 0; i < gi_interface_info_get_n_properties (info); i++)
{ {
GIPropertyInfo *prop = gi_interface_info_get_property (info, i); GIPropertyInfo *prop = gi_interface_info_get_property (info, i);
write_property_info (ns, prop, file); write_property_info (ns, prop, file);
gi_base_info_unref ((GIBaseInfo *)prop); gi_base_info_unref ((GIBaseInfo *)prop);
} }
for (guint i = 0; i < gi_interface_info_get_n_signals (info); i++) for (unsigned int i = 0; i < gi_interface_info_get_n_signals (info); i++)
{ {
GISignalInfo *signal = gi_interface_info_get_signal (info, i); GISignalInfo *signal = gi_interface_info_get_signal (info, i);
write_signal_info (ns, signal, file); write_signal_info (ns, signal, file);
gi_base_info_unref ((GIBaseInfo *)signal); gi_base_info_unref ((GIBaseInfo *)signal);
} }
for (guint i = 0; i < gi_interface_info_get_n_vfuncs (info); i++) for (unsigned int i = 0; i < gi_interface_info_get_n_vfuncs (info); i++)
{ {
GIVFuncInfo *vfunc = gi_interface_info_get_vfunc (info, i); GIVFuncInfo *vfunc = gi_interface_info_get_vfunc (info, i);
write_vfunc_info (ns, vfunc, file); write_vfunc_info (ns, vfunc, file);
gi_base_info_unref ((GIBaseInfo *)vfunc); gi_base_info_unref ((GIBaseInfo *)vfunc);
} }
for (guint i = 0; i < gi_interface_info_get_n_constants (info); i++) for (unsigned int i = 0; i < gi_interface_info_get_n_constants (info); i++)
{ {
GIConstantInfo *constant = gi_interface_info_get_constant (info, i); GIConstantInfo *constant = gi_interface_info_get_constant (info, i);
write_constant_info (ns, constant, file); write_constant_info (ns, constant, file);
@ -1240,16 +1241,16 @@ write_interface_info (const gchar *ns,
} }
static void static void
write_union_info (const gchar *ns, write_union_info (const char *ns,
GIUnionInfo *info, GIUnionInfo *info,
Xml *file) Xml *file)
{ {
const gchar *name; const char *name;
const gchar *type_name; const char *type_name;
const gchar *type_init; const char *type_init;
const gchar *func; const char *func;
gboolean deprecated; gboolean deprecated;
gsize size; size_t size;
name = gi_base_info_get_name ((GIBaseInfo *)info); name = gi_base_info_get_name ((GIBaseInfo *)info);
deprecated = gi_base_info_is_deprecated ((GIBaseInfo *)info); deprecated = gi_base_info_is_deprecated ((GIBaseInfo *)info);
@ -1282,30 +1283,30 @@ write_union_info (const gchar *ns,
if (gi_union_info_is_discriminated (info)) if (gi_union_info_is_discriminated (info))
{ {
guint offset; size_t offset;
GITypeInfo *type; GITypeInfo *type;
offset = gi_union_info_get_discriminator_offset (info); offset = gi_union_info_get_discriminator_offset (info);
type = gi_union_info_get_discriminator_type (info); type = gi_union_info_get_discriminator_type (info);
xml_start_element (file, "discriminator"); xml_start_element (file, "discriminator");
xml_printf (file, " offset=\"%d\" type=\"", offset); xml_printf (file, " offset=\"%zu\" type=\"", offset);
write_type_info (ns, type, file); write_type_info (ns, type, file);
xml_end_element (file, "discriminator"); xml_end_element (file, "discriminator");
gi_base_info_unref ((GIBaseInfo *)type); gi_base_info_unref ((GIBaseInfo *)type);
} }
for (guint i = 0; i < gi_union_info_get_n_fields (info); i++) for (unsigned int i = 0; i < gi_union_info_get_n_fields (info); i++)
{ {
GIFieldInfo *field = gi_union_info_get_field (info, i); GIFieldInfo *field = gi_union_info_get_field (info, i);
GIConstantInfo *constant = gi_union_info_get_discriminator (info, i); GIConstantInfo *constant = gi_union_info_get_discriminator (info, i);
write_field_info (ns, field, constant, file); write_field_info (ns, field, constant, file);
gi_base_info_unref ((GIBaseInfo *)field); gi_base_info_unref ((GIBaseInfo *)field);
if (constant) if (constant)
gi_base_info_unref ((GIBaseInfo *)constant); gi_base_info_unref ((GIBaseInfo *)constant);
} }
for (guint i = 0; i < gi_union_info_get_n_methods (info); i++) for (unsigned int i = 0; i < gi_union_info_get_n_methods (info); i++)
{ {
GIFunctionInfo *function = gi_union_info_get_method (info, i); GIFunctionInfo *function = gi_union_info_get_method (info, i);
write_function_info (ns, function, file); write_function_info (ns, function, file);
@ -1335,7 +1336,7 @@ gi_ir_writer_write (const char *filename,
gboolean show_all) gboolean show_all)
{ {
FILE *ofile; FILE *ofile;
gint i, j; size_t i, j;
char **dependencies; char **dependencies;
GIRepository *repository; GIRepository *repository;
Xml *xml; Xml *xml;
@ -1346,22 +1347,22 @@ gi_ir_writer_write (const char *filename,
ofile = stdout; ofile = stdout;
else else
{ {
gchar *full_filename; char *full_filename;
if (needs_prefix) if (needs_prefix)
full_filename = g_strdup_printf ("%s-%s", ns, filename); full_filename = g_strdup_printf ("%s-%s", ns, filename);
else else
full_filename = g_strdup (filename); full_filename = g_strdup (filename);
ofile = g_fopen (filename, "w"); ofile = g_fopen (filename, "w");
if (ofile == NULL) if (ofile == NULL)
{ {
g_fprintf (stderr, "failed to open '%s': %s\n", g_fprintf (stderr, "failed to open '%s': %s\n",
full_filename, g_strerror (errno)); full_filename, g_strerror (errno));
g_free (full_filename); g_free (full_filename);
return; return;
} }
g_free (full_filename); g_free (full_filename);
} }
@ -1371,30 +1372,30 @@ gi_ir_writer_write (const char *filename,
xml_printf (xml, "<?xml version=\"1.0\"?>\n"); xml_printf (xml, "<?xml version=\"1.0\"?>\n");
xml_start_element (xml, "repository"); xml_start_element (xml, "repository");
xml_printf (xml, " version=\"1.0\"\n" xml_printf (xml, " version=\"1.0\"\n"
" xmlns=\"http://www.gtk.org/introspection/core/1.0\"\n" " xmlns=\"http://www.gtk.org/introspection/core/1.0\"\n"
" xmlns:c=\"http://www.gtk.org/introspection/c/1.0\"\n" " xmlns:c=\"http://www.gtk.org/introspection/c/1.0\"\n"
" xmlns:glib=\"http://www.gtk.org/introspection/glib/1.0\""); " xmlns:glib=\"http://www.gtk.org/introspection/glib/1.0\"");
dependencies = gi_repository_get_immediate_dependencies (repository, ns); dependencies = gi_repository_get_immediate_dependencies (repository, ns);
if (dependencies != NULL) if (dependencies != NULL)
{ {
for (i = 0; dependencies[i]; i++) for (i = 0; dependencies[i]; i++)
{ {
char **parts = g_strsplit (dependencies[i], "-", 2); char **parts = g_strsplit (dependencies[i], "-", 2);
xml_start_element (xml, "include"); xml_start_element (xml, "include");
xml_printf (xml, " name=\"%s\" version=\"%s\"", parts[0], parts[1]); xml_printf (xml, " name=\"%s\" version=\"%s\"", parts[0], parts[1]);
xml_end_element (xml, "include"); xml_end_element (xml, "include");
g_strfreev (parts); g_strfreev (parts);
} }
} }
if (TRUE) if (TRUE)
{ {
const char * const *shared_libraries; const char * const *shared_libraries;
const gchar *c_prefix; const char *c_prefix;
const char *cur_ns = ns; const char *cur_ns = ns;
const char *cur_version; const char *cur_version;
gint n_infos; unsigned int n_infos;
cur_version = gi_repository_get_version (repository, cur_ns); cur_version = gi_repository_get_version (repository, cur_ns);
@ -1413,50 +1414,50 @@ gi_ir_writer_write (const char *filename,
n_infos = gi_repository_get_n_infos (repository, cur_ns); n_infos = gi_repository_get_n_infos (repository, cur_ns);
for (j = 0; j < n_infos; j++) for (j = 0; j < n_infos; j++)
{ {
GIBaseInfo *info = gi_repository_get_info (repository, cur_ns, j); GIBaseInfo *info = gi_repository_get_info (repository, cur_ns, j);
switch (gi_base_info_get_info_type (info)) switch (gi_base_info_get_info_type (info))
{ {
case GI_INFO_TYPE_FUNCTION: case GI_INFO_TYPE_FUNCTION:
write_function_info (ns, (GIFunctionInfo *)info, xml); write_function_info (ns, (GIFunctionInfo *)info, xml);
break; break;
case GI_INFO_TYPE_CALLBACK: case GI_INFO_TYPE_CALLBACK:
write_callback_info (ns, (GICallbackInfo *)info, xml); write_callback_info (ns, (GICallbackInfo *)info, xml);
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 (ns, (GIStructInfo *)info, xml); write_struct_info (ns, (GIStructInfo *)info, xml);
break; break;
case GI_INFO_TYPE_UNION: case GI_INFO_TYPE_UNION:
write_union_info (ns, (GIUnionInfo *)info, xml); write_union_info (ns, (GIUnionInfo *)info, xml);
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 (ns, (GIEnumInfo *)info, xml); write_enum_info (ns, (GIEnumInfo *)info, xml);
break; break;
case GI_INFO_TYPE_CONSTANT: case GI_INFO_TYPE_CONSTANT:
write_constant_info (ns, (GIConstantInfo *)info, xml); write_constant_info (ns, (GIConstantInfo *)info, xml);
break; break;
case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_OBJECT:
write_object_info (ns, (GIObjectInfo *)info, xml); write_object_info (ns, (GIObjectInfo *)info, xml);
break; break;
case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_INTERFACE:
write_interface_info (ns, (GIInterfaceInfo *)info, xml); write_interface_info (ns, (GIInterfaceInfo *)info, xml);
break; break;
default: default:
g_error ("unknown info type %d", gi_base_info_get_info_type (info)); g_error ("unknown info type %d", gi_base_info_get_info_type (info));
} }
gi_base_info_unref (info); gi_base_info_unref (info);
} }
xml_end_element (xml, "namespace"); xml_end_element (xml, "namespace");
} }

View File

@ -53,7 +53,7 @@
* Returns: number of fields * Returns: number of fields
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_struct_info_get_n_fields (GIStructInfo *info) gi_struct_info_get_n_fields (GIStructInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -72,16 +72,16 @@ gi_struct_info_get_n_fields (GIStructInfo *info)
* Returns: field offset, in bytes * Returns: field offset, in bytes
* Since: 2.80 * Since: 2.80
*/ */
static gint32 static size_t
gi_struct_get_field_offset (GIStructInfo *info, gi_struct_get_field_offset (GIStructInfo *info,
guint n) uint16_t n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
guint32 offset = rinfo->offset + header->struct_blob_size; size_t offset = rinfo->offset + header->struct_blob_size;
FieldBlob *field_blob; FieldBlob *field_blob;
for (guint i = 0; i < n; i++) for (uint16_t i = 0; i < n; i++)
{ {
field_blob = (FieldBlob *)&rinfo->typelib->data[offset]; field_blob = (FieldBlob *)&rinfo->typelib->data[offset];
offset += header->field_blob_size; offset += header->field_blob_size;
@ -105,10 +105,12 @@ gi_struct_get_field_offset (GIStructInfo *info,
*/ */
GIFieldInfo * GIFieldInfo *
gi_struct_info_get_field (GIStructInfo *info, gi_struct_info_get_field (GIStructInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
return (GIFieldInfo *) gi_info_new (GI_INFO_TYPE_FIELD, (GIBaseInfo*)info, rinfo->typelib, return (GIFieldInfo *) gi_info_new (GI_INFO_TYPE_FIELD, (GIBaseInfo*)info, rinfo->typelib,
gi_struct_get_field_offset (info, n)); gi_struct_get_field_offset (info, n));
} }
@ -127,18 +129,17 @@ gi_struct_info_get_field (GIStructInfo *info,
*/ */
GIFieldInfo * GIFieldInfo *
gi_struct_info_find_field (GIStructInfo *info, gi_struct_info_find_field (GIStructInfo *info,
const gchar *name) const char *name)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset]; StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
guint32 offset = rinfo->offset + header->struct_blob_size; size_t offset = rinfo->offset + header->struct_blob_size;
gint i;
for (i = 0; i < blob->n_fields; i++) for (size_t i = 0; i < blob->n_fields; i++)
{ {
FieldBlob *field_blob = (FieldBlob *)&rinfo->typelib->data[offset]; FieldBlob *field_blob = (FieldBlob *)&rinfo->typelib->data[offset];
const gchar *fname = (const gchar *)&rinfo->typelib->data[field_blob->name]; const char *fname = (const char *)&rinfo->typelib->data[field_blob->name];
if (strcmp (name, fname) == 0) if (strcmp (name, fname) == 0)
{ {
@ -165,7 +166,7 @@ gi_struct_info_find_field (GIStructInfo *info,
* Returns: number of methods * Returns: number of methods
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_struct_info_get_n_methods (GIStructInfo *info) gi_struct_info_get_n_methods (GIStructInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -187,12 +188,14 @@ gi_struct_info_get_n_methods (GIStructInfo *info)
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_struct_info_get_method (GIStructInfo *info, gi_struct_info_get_method (GIStructInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset]; StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
gint offset; size_t offset;
g_return_val_if_fail (n <= G_MAXUINT16, NULL);
offset = gi_struct_get_field_offset (info, blob->n_fields) + n * header->function_blob_size; offset = gi_struct_get_field_offset (info, blob->n_fields) + n * header->function_blob_size;
return (GIFunctionInfo *) gi_info_new (GI_INFO_TYPE_FUNCTION, (GIBaseInfo*)info, return (GIFunctionInfo *) gi_info_new (GI_INFO_TYPE_FUNCTION, (GIBaseInfo*)info,
@ -213,9 +216,9 @@ gi_struct_info_get_method (GIStructInfo *info,
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_struct_info_find_method (GIStructInfo *info, gi_struct_info_find_method (GIStructInfo *info,
const gchar *name) const char *name)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset]; StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
@ -232,7 +235,7 @@ gi_struct_info_find_method (GIStructInfo *info,
* Returns: size of the structure, in bytes * Returns: size of the structure, in bytes
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_struct_info_get_size (GIStructInfo *info) gi_struct_info_get_size (GIStructInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -250,7 +253,7 @@ gi_struct_info_get_size (GIStructInfo *info)
* Returns: required alignment, in bytes * Returns: required alignment, in bytes
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_struct_info_get_alignment (GIStructInfo *info) gi_struct_info_get_alignment (GIStructInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;

View File

@ -45,32 +45,32 @@ G_BEGIN_DECLS
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_struct_info_get_n_fields (GIStructInfo *info); unsigned int gi_struct_info_get_n_fields (GIStructInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFieldInfo * gi_struct_info_get_field (GIStructInfo *info, GIFieldInfo * gi_struct_info_get_field (GIStructInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFieldInfo * gi_struct_info_find_field (GIStructInfo *info, GIFieldInfo * gi_struct_info_find_field (GIStructInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_struct_info_get_n_methods (GIStructInfo *info); unsigned int gi_struct_info_get_n_methods (GIStructInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_struct_info_get_method (GIStructInfo *info, GIFunctionInfo * gi_struct_info_get_method (GIStructInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_struct_info_find_method (GIStructInfo *info, GIFunctionInfo * gi_struct_info_find_method (GIStructInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_struct_info_get_size (GIStructInfo *info); size_t gi_struct_info_get_size (GIStructInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_struct_info_get_alignment (GIStructInfo *info); size_t gi_struct_info_get_alignment (GIStructInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_struct_info_is_gtype_struct (GIStructInfo *info); gboolean gi_struct_info_is_gtype_struct (GIStructInfo *info);

View File

@ -135,8 +135,8 @@ gi_type_info_get_tag (GITypeInfo *info)
* Since: 2.80 * Since: 2.80
*/ */
GITypeInfo * GITypeInfo *
gi_type_info_get_param_type (GITypeInfo *info, gi_type_info_get_param_type (GITypeInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
SimpleTypeBlob *type; SimpleTypeBlob *type;
@ -241,7 +241,7 @@ gi_type_info_get_interface (GITypeInfo *info)
* or it has no length argument * or it has no length argument
* Since: 2.80 * Since: 2.80
*/ */
gint gssize
gi_type_info_get_array_length_index (GITypeInfo *info) gi_type_info_get_array_length_index (GITypeInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -257,10 +257,10 @@ gi_type_info_get_array_length_index (GITypeInfo *info)
ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset]; ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset];
if (blob->tag == GI_TYPE_TAG_ARRAY) if (blob->tag == GI_TYPE_TAG_ARRAY)
{ {
if (blob->has_length) if (blob->has_length)
return blob->dimensions.length; return blob->dimensions.length;
} }
} }
return -1; return -1;
@ -293,10 +293,10 @@ gi_type_info_get_array_fixed_size (GITypeInfo *info)
ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset]; ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset];
if (blob->tag == GI_TYPE_TAG_ARRAY) if (blob->tag == GI_TYPE_TAG_ARRAY)
{ {
if (blob->has_size) if (blob->has_size)
return blob->dimensions.size; return blob->dimensions.size;
} }
} }
return -1; return -1;
@ -329,7 +329,7 @@ gi_type_info_is_zero_terminated (GITypeInfo *info)
ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset]; ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset];
if (blob->tag == GI_TYPE_TAG_ARRAY) if (blob->tag == GI_TYPE_TAG_ARRAY)
return blob->zero_terminated; return blob->zero_terminated;
} }
return FALSE; return FALSE;
@ -426,7 +426,7 @@ gi_type_info_get_storage_type (GITypeInfo *info)
*/ */
void void
gi_type_tag_argument_from_hash_pointer (GITypeTag storage_type, gi_type_tag_argument_from_hash_pointer (GITypeTag storage_type,
gpointer hash_pointer, void *hash_pointer,
GIArgument *arg) GIArgument *arg)
{ {
switch (storage_type) switch (storage_type)
@ -435,23 +435,23 @@ gi_type_tag_argument_from_hash_pointer (GITypeTag storage_type,
arg->v_boolean = !!GPOINTER_TO_INT (hash_pointer); arg->v_boolean = !!GPOINTER_TO_INT (hash_pointer);
break; break;
case GI_TYPE_TAG_INT8: case GI_TYPE_TAG_INT8:
arg->v_int8 = (gint8)GPOINTER_TO_INT (hash_pointer); arg->v_int8 = (int8_t) GPOINTER_TO_INT (hash_pointer);
break; break;
case GI_TYPE_TAG_UINT8: case GI_TYPE_TAG_UINT8:
arg->v_uint8 = (guint8)GPOINTER_TO_UINT (hash_pointer); arg->v_uint8 = (uint8_t) GPOINTER_TO_UINT (hash_pointer);
break; break;
case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT16:
arg->v_int16 = (gint16)GPOINTER_TO_INT (hash_pointer); arg->v_int16 = (int16_t) GPOINTER_TO_INT (hash_pointer);
break; break;
case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT16:
arg->v_uint16 = (guint16)GPOINTER_TO_UINT (hash_pointer); arg->v_uint16 = (uint16_t) GPOINTER_TO_UINT (hash_pointer);
break; break;
case GI_TYPE_TAG_INT32: case GI_TYPE_TAG_INT32:
arg->v_int32 = (gint32)GPOINTER_TO_INT (hash_pointer); arg->v_int32 = (int32_t) GPOINTER_TO_INT (hash_pointer);
break; break;
case GI_TYPE_TAG_UINT32: case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_UNICHAR: case GI_TYPE_TAG_UNICHAR:
arg->v_uint32 = (guint32)GPOINTER_TO_UINT (hash_pointer); arg->v_uint32 = (uint32_t) GPOINTER_TO_UINT (hash_pointer);
break; break;
case GI_TYPE_TAG_GTYPE: case GI_TYPE_TAG_GTYPE:
arg->v_size = GPOINTER_TO_SIZE (hash_pointer); arg->v_size = GPOINTER_TO_SIZE (hash_pointer);
@ -503,7 +503,7 @@ gi_type_tag_argument_from_hash_pointer (GITypeTag storage_type,
*/ */
void void
gi_type_info_argument_from_hash_pointer (GITypeInfo *info, gi_type_info_argument_from_hash_pointer (GITypeInfo *info,
gpointer hash_pointer, void *hash_pointer,
GIArgument *arg) GIArgument *arg)
{ {
GITypeTag storage_type = gi_type_info_get_storage_type (info); GITypeTag storage_type = gi_type_info_get_storage_type (info);
@ -537,7 +537,7 @@ gi_type_info_argument_from_hash_pointer (GITypeInfo *info,
* for example * for example
* Since: 2.80 * Since: 2.80
*/ */
gpointer void *
gi_type_tag_hash_pointer_from_argument (GITypeTag storage_type, gi_type_tag_hash_pointer_from_argument (GITypeTag storage_type,
GIArgument *arg) GIArgument *arg)
{ {
@ -605,7 +605,7 @@ gi_type_tag_hash_pointer_from_argument (GITypeTag storage_type,
* for example * for example
* Since: 2.80 * Since: 2.80
*/ */
gpointer void *
gi_type_info_hash_pointer_from_argument (GITypeInfo *info, gi_type_info_hash_pointer_from_argument (GITypeInfo *info,
GIArgument *arg) GIArgument *arg)
{ {

View File

@ -76,10 +76,10 @@ G_BEGIN_DECLS
((tag) >= GI_TYPE_TAG_GLIST && (tag) <= GI_TYPE_TAG_GHASH)) ((tag) >= GI_TYPE_TAG_GLIST && (tag) <= GI_TYPE_TAG_GHASH))
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar* gi_type_tag_to_string (GITypeTag type); const char * gi_type_tag_to_string (GITypeTag type);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar* gi_info_type_to_string (GIInfoType type); const char * gi_info_type_to_string (GIInfoType type);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
@ -89,14 +89,14 @@ GI_AVAILABLE_IN_ALL
GITypeTag gi_type_info_get_tag (GITypeInfo *info); GITypeTag gi_type_info_get_tag (GITypeInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypeInfo * gi_type_info_get_param_type (GITypeInfo *info, GITypeInfo * gi_type_info_get_param_type (GITypeInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIBaseInfo * gi_type_info_get_interface (GITypeInfo *info); GIBaseInfo * gi_type_info_get_interface (GITypeInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gint gi_type_info_get_array_length_index (GITypeInfo *info); gssize gi_type_info_get_array_length_index (GITypeInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gssize gi_type_info_get_array_fixed_size (GITypeInfo *info); gssize gi_type_info_get_array_fixed_size (GITypeInfo *info);
@ -112,20 +112,20 @@ GITypeTag gi_type_info_get_storage_type (GITypeInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
void gi_type_info_argument_from_hash_pointer (GITypeInfo *info, void gi_type_info_argument_from_hash_pointer (GITypeInfo *info,
gpointer hash_pointer, void *hash_pointer,
GIArgument *arg); GIArgument *arg);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gpointer gi_type_info_hash_pointer_from_argument (GITypeInfo *info, void * gi_type_info_hash_pointer_from_argument (GITypeInfo *info,
GIArgument *arg); GIArgument *arg);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
void gi_type_tag_argument_from_hash_pointer (GITypeTag storage_type, void gi_type_tag_argument_from_hash_pointer (GITypeTag storage_type,
gpointer hash_pointer, void *hash_pointer,
GIArgument *arg); GIArgument *arg);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gpointer gi_type_tag_hash_pointer_from_argument (GITypeTag storage_type, void * gi_type_tag_hash_pointer_from_argument (GITypeTag storage_type,
GIArgument *arg); GIArgument *arg);
G_END_DECLS G_END_DECLS

View File

@ -287,47 +287,47 @@ _blob_is_registered_type (GITypelibBlobType blob_type)
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
gchar magic[16]; char magic[16];
guint8 major_version; uint8_t major_version;
guint8 minor_version; uint8_t minor_version;
guint16 reserved; uint16_t reserved;
guint16 n_entries; uint16_t n_entries;
guint16 n_local_entries; uint16_t n_local_entries;
guint32 directory; uint32_t directory;
guint32 n_attributes; uint32_t n_attributes;
guint32 attributes; uint32_t attributes;
guint32 dependencies; uint32_t dependencies;
guint32 size; uint32_t size;
guint32 namespace; uint32_t namespace;
guint32 nsversion; uint32_t nsversion;
guint32 shared_library; uint32_t shared_library;
guint32 c_prefix; uint32_t c_prefix;
guint16 entry_blob_size; uint16_t entry_blob_size;
guint16 function_blob_size; uint16_t function_blob_size;
guint16 callback_blob_size; uint16_t callback_blob_size;
guint16 signal_blob_size; uint16_t signal_blob_size;
guint16 vfunc_blob_size; uint16_t vfunc_blob_size;
guint16 arg_blob_size; uint16_t arg_blob_size;
guint16 property_blob_size; uint16_t property_blob_size;
guint16 field_blob_size; uint16_t field_blob_size;
guint16 value_blob_size; uint16_t value_blob_size;
guint16 attribute_blob_size; uint16_t attribute_blob_size;
guint16 constant_blob_size; uint16_t constant_blob_size;
guint16 error_domain_blob_size; uint16_t error_domain_blob_size;
guint16 signature_blob_size; uint16_t signature_blob_size;
guint16 enum_blob_size; uint16_t enum_blob_size;
guint16 struct_blob_size; uint16_t struct_blob_size;
guint16 object_blob_size; uint16_t object_blob_size;
guint16 interface_blob_size; uint16_t interface_blob_size;
guint16 union_blob_size; uint16_t union_blob_size;
guint32 sections; uint32_t sections;
guint16 padding[6]; uint16_t padding[6];
} Header; } Header;
/** /**
@ -357,8 +357,8 @@ typedef enum {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 id; uint32_t id;
guint32 offset; uint32_t offset;
} Section; } Section;
@ -380,12 +380,12 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 local : 1; uint16_t local : 1;
guint16 reserved :15; uint16_t reserved :15;
guint32 name; uint32_t name;
guint32 offset; uint32_t offset;
} DirEntry; } DirEntry;
/** /**
@ -401,17 +401,17 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint reserved : 8; unsigned reserved : 8;
guint reserved2 :16; unsigned reserved2 :16;
guint pointer : 1; unsigned pointer : 1;
guint reserved3 : 2; unsigned reserved3 : 2;
guint tag : 5; unsigned tag : 5;
} SimpleTypeBlobFlags; } SimpleTypeBlobFlags;
union _SimpleTypeBlob union _SimpleTypeBlob
{ {
SimpleTypeBlobFlags flags; SimpleTypeBlobFlags flags;
guint32 offset; uint32_t offset;
}; };
/** /**
@ -489,23 +489,23 @@ typedef union _SimpleTypeBlob SimpleTypeBlob;
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 name; uint32_t name;
guint in : 1; unsigned in : 1;
guint out : 1; unsigned out : 1;
guint caller_allocates : 1; unsigned caller_allocates : 1;
guint nullable : 1; unsigned nullable : 1;
guint optional : 1; unsigned optional : 1;
guint transfer_ownership : 1; unsigned transfer_ownership : 1;
guint transfer_container_ownership : 1; unsigned transfer_container_ownership : 1;
guint return_value : 1; unsigned return_value : 1;
guint scope : 3; unsigned scope : 3;
guint skip : 1; unsigned skip : 1;
guint reserved :20; unsigned reserved :20;
gint8 closure; int8_t closure;
gint8 destroy; int8_t destroy;
guint16 padding; uint16_t padding;
SimpleTypeBlob arg_type; SimpleTypeBlob arg_type;
} ArgBlob; } ArgBlob;
@ -538,15 +538,15 @@ typedef struct {
typedef struct { typedef struct {
SimpleTypeBlob return_type; SimpleTypeBlob return_type;
guint16 may_return_null : 1; uint16_t may_return_null : 1;
guint16 caller_owns_return_value : 1; uint16_t caller_owns_return_value : 1;
guint16 caller_owns_return_container : 1; uint16_t caller_owns_return_container : 1;
guint16 skip_return : 1; uint16_t skip_return : 1;
guint16 instance_transfer_ownership : 1; uint16_t instance_transfer_ownership : 1;
guint16 throws : 1; uint16_t throws : 1;
guint16 reserved :10; uint16_t reserved :10;
guint16 n_arguments; uint16_t n_arguments;
ArgBlob arguments[]; ArgBlob arguments[];
} SignatureBlob; } SignatureBlob;
@ -566,11 +566,11 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; /* 1 */ uint16_t blob_type; /* 1 */
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 reserved :15; uint16_t reserved :15;
guint32 name; uint32_t name;
} CommonBlob; } CommonBlob;
/** /**
@ -605,26 +605,26 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; /* 1 */ uint16_t blob_type; /* 1 */
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 setter : 1; uint16_t setter : 1;
guint16 getter : 1; uint16_t getter : 1;
guint16 constructor : 1; uint16_t constructor : 1;
guint16 wraps_vfunc : 1; uint16_t wraps_vfunc : 1;
guint16 throws : 1; uint16_t throws : 1;
guint16 index :10; uint16_t index :10;
/* Note the bits above need to match CommonBlob /* Note the bits above need to match CommonBlob
* and are thus exhausted, extend things using * and are thus exhausted, extend things using
* the reserved block below. */ * the reserved block below. */
guint32 name; uint32_t name;
guint32 symbol; uint32_t symbol;
guint32 signature; uint32_t signature;
guint16 is_static : 1; uint16_t is_static : 1;
guint16 reserved : 15; uint16_t reserved : 15;
guint16 reserved2 : 16; uint16_t reserved2 : 16;
} FunctionBlob; } FunctionBlob;
/** /**
@ -641,12 +641,12 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; /* 2 */ uint16_t blob_type; /* 2 */
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 reserved :15; uint16_t reserved :15;
guint32 name; uint32_t name;
guint32 signature; uint32_t signature;
} CallbackBlob; } CallbackBlob;
/** /**
@ -662,11 +662,11 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint8 pointer :1; uint8_t pointer :1;
guint8 reserved :2; uint8_t reserved :2;
guint8 tag :5; uint8_t tag :5;
guint8 reserved2; uint8_t reserved2;
guint16 interface; uint16_t interface;
} InterfaceTypeBlob; } InterfaceTypeBlob;
/** /**
@ -679,8 +679,8 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef union { typedef union {
guint16 length; uint16_t length;
guint16 size; uint16_t size;
} ArrayTypeDimension; } ArrayTypeDimension;
/** /**
@ -706,15 +706,15 @@ typedef union {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 pointer :1; uint16_t pointer :1;
guint16 reserved :2; uint16_t reserved :2;
guint16 tag :5; uint16_t tag :5;
guint16 zero_terminated :1; uint16_t zero_terminated :1;
guint16 has_length :1; uint16_t has_length :1;
guint16 has_size :1; uint16_t has_size :1;
guint16 array_type :2; uint16_t array_type :2;
guint16 reserved2 :3; uint16_t reserved2 :3;
ArrayTypeDimension dimensions; ArrayTypeDimension dimensions;
@ -735,12 +735,12 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint8 pointer :1; uint8_t pointer :1;
guint8 reserved :2; uint8_t reserved :2;
guint8 tag :5; uint8_t tag :5;
guint8 reserved2; uint8_t reserved2;
guint16 n_types; uint16_t n_types;
SimpleTypeBlob type[]; SimpleTypeBlob type[];
} ParamTypeBlob; } ParamTypeBlob;
@ -759,20 +759,20 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint8 pointer :1; uint8_t pointer :1;
guint8 reserved :2; uint8_t reserved :2;
guint8 tag :5; uint8_t tag :5;
guint8 reserved2; uint8_t reserved2;
guint16 n_domains; /* Must be 0 */ uint16_t n_domains; /* Must be 0 */
guint16 domains[]; uint16_t domains[];
} ErrorTypeBlob; } ErrorTypeBlob;
/** /**
* ValueBlob: * ValueBlob:
* @deprecated: Whether this value is deprecated * @deprecated: Whether this value is deprecated
* @unsigned_value: if set, value is a 32-bit unsigned integer cast to gint32 * @unsigned_value: if set, value is a 32-bit unsigned integer cast to int32_t
* @reserved: Reserved for future use. * @reserved: Reserved for future use.
* @name: Name of blob * @name: Name of blob
* @value: The numerical value * @value: The numerical value
@ -782,11 +782,11 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 deprecated : 1; uint32_t deprecated : 1;
guint32 unsigned_value : 1; uint32_t unsigned_value : 1;
guint32 reserved :30; uint32_t reserved :30;
guint32 name; uint32_t name;
gint32 value; int32_t value;
} ValueBlob; } ValueBlob;
/** /**
@ -808,17 +808,17 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 name; uint32_t name;
guint8 readable :1; uint8_t readable :1;
guint8 writable :1; uint8_t writable :1;
guint8 has_embedded_type :1; uint8_t has_embedded_type :1;
guint8 reserved :5; uint8_t reserved :5;
guint8 bits; uint8_t bits;
guint16 struct_offset; uint16_t struct_offset;
guint32 reserved2; uint32_t reserved2;
SimpleTypeBlob type; SimpleTypeBlob type;
} FieldBlob; } FieldBlob;
@ -839,14 +839,14 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 unregistered : 1; uint16_t unregistered : 1;
guint16 reserved :14; uint16_t reserved :14;
guint32 name; uint32_t name;
guint32 gtype_name; uint32_t gtype_name;
guint32 gtype_init; uint32_t gtype_init;
} RegisteredTypeBlob; } RegisteredTypeBlob;
/** /**
@ -876,27 +876,27 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 unregistered : 1; uint16_t unregistered : 1;
guint16 is_gtype_struct : 1; uint16_t is_gtype_struct : 1;
guint16 alignment : 6; uint16_t alignment : 6;
guint16 foreign : 1; uint16_t foreign : 1;
guint16 reserved : 6; uint16_t reserved : 6;
guint32 name; uint32_t name;
guint32 gtype_name; uint32_t gtype_name;
guint32 gtype_init; uint32_t gtype_init;
guint32 size; uint32_t size;
guint16 n_fields; uint16_t n_fields;
guint16 n_methods; uint16_t n_methods;
guint32 copy_func; uint32_t copy_func;
guint32 free_func; uint32_t free_func;
} StructBlob; } StructBlob;
/** /**
@ -927,26 +927,26 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 unregistered : 1; uint16_t unregistered : 1;
guint16 discriminated : 1; uint16_t discriminated : 1;
guint16 alignment : 6; uint16_t alignment : 6;
guint16 reserved : 7; uint16_t reserved : 7;
guint32 name; uint32_t name;
guint32 gtype_name; uint32_t gtype_name;
guint32 gtype_init; uint32_t gtype_init;
guint32 size; uint32_t size;
guint16 n_fields; uint16_t n_fields;
guint16 n_functions; uint16_t n_functions;
guint32 copy_func; uint32_t copy_func;
guint32 free_func; uint32_t free_func;
gint32 discriminator_offset; int32_t discriminator_offset;
SimpleTypeBlob discriminator_type; SimpleTypeBlob discriminator_type;
} UnionBlob; } UnionBlob;
@ -971,22 +971,22 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 unregistered : 1; uint16_t unregistered : 1;
guint16 storage_type : 5; uint16_t storage_type : 5;
guint16 reserved : 9; uint16_t reserved : 9;
guint32 name; uint32_t name;
guint32 gtype_name; uint32_t gtype_name;
guint32 gtype_init; uint32_t gtype_init;
guint16 n_values; uint16_t n_values;
guint16 n_methods; uint16_t n_methods;
guint32 error_domain; uint32_t error_domain;
ValueBlob values[]; ValueBlob values[];
} EnumBlob; } EnumBlob;
@ -1021,20 +1021,20 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 name; uint32_t name;
guint32 deprecated : 1; uint32_t deprecated : 1;
guint32 readable : 1; uint32_t readable : 1;
guint32 writable : 1; uint32_t writable : 1;
guint32 construct : 1; uint32_t construct : 1;
guint32 construct_only : 1; uint32_t construct_only : 1;
guint32 transfer_ownership : 1; uint32_t transfer_ownership : 1;
guint32 transfer_container_ownership : 1; uint32_t transfer_container_ownership : 1;
guint32 setter :10; uint32_t setter :10;
guint32 getter :10; uint32_t getter :10;
guint32 reserved : 5; uint32_t reserved : 5;
guint32 reserved2; uint32_t reserved2;
SimpleTypeBlob type; SimpleTypeBlob type;
} PropertyBlob; } PropertyBlob;
@ -1064,25 +1064,25 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 run_first : 1; uint16_t run_first : 1;
guint16 run_last : 1; uint16_t run_last : 1;
guint16 run_cleanup : 1; uint16_t run_cleanup : 1;
guint16 no_recurse : 1; uint16_t no_recurse : 1;
guint16 detailed : 1; uint16_t detailed : 1;
guint16 action : 1; uint16_t action : 1;
guint16 no_hooks : 1; uint16_t no_hooks : 1;
guint16 has_class_closure : 1; uint16_t has_class_closure : 1;
guint16 true_stops_emit : 1; uint16_t true_stops_emit : 1;
guint16 reserved : 6; uint16_t reserved : 6;
guint16 class_closure; uint16_t class_closure;
guint32 name; uint32_t name;
guint32 reserved2; uint32_t reserved2;
guint32 signature; uint32_t signature;
} SignalBlob; } SignalBlob;
/** /**
@ -1115,22 +1115,22 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 name; uint32_t name;
guint16 must_chain_up : 1; uint16_t must_chain_up : 1;
guint16 must_be_implemented : 1; uint16_t must_be_implemented : 1;
guint16 must_not_be_implemented : 1; uint16_t must_not_be_implemented : 1;
guint16 class_closure : 1; uint16_t class_closure : 1;
guint16 throws : 1; uint16_t throws : 1;
guint16 reserved :11; uint16_t reserved :11;
guint16 signal; uint16_t signal;
guint16 struct_offset; uint16_t struct_offset;
guint16 invoker : 10; /* Number of bits matches @index in FunctionBlob */ uint16_t invoker : 10; /* Number of bits matches @index in FunctionBlob */
guint16 reserved2 : 6; uint16_t reserved2 : 6;
guint32 reserved3; uint32_t reserved3;
guint32 signature; uint32_t signature;
} VFuncBlob; } VFuncBlob;
/** /**
@ -1177,38 +1177,38 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; /* 7 */ uint16_t blob_type; /* 7 */
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 abstract : 1; uint16_t abstract : 1;
guint16 fundamental : 1; uint16_t fundamental : 1;
guint16 final_ : 1; uint16_t final_ : 1;
guint16 reserved :12; uint16_t reserved :12;
guint32 name; uint32_t name;
guint32 gtype_name; uint32_t gtype_name;
guint32 gtype_init; uint32_t gtype_init;
guint16 parent; uint16_t parent;
guint16 gtype_struct; uint16_t gtype_struct;
guint16 n_interfaces; uint16_t n_interfaces;
guint16 n_fields; uint16_t n_fields;
guint16 n_properties; uint16_t n_properties;
guint16 n_methods; uint16_t n_methods;
guint16 n_signals; uint16_t n_signals;
guint16 n_vfuncs; uint16_t n_vfuncs;
guint16 n_constants; uint16_t n_constants;
guint16 n_field_callbacks; uint16_t n_field_callbacks;
guint32 ref_func; uint32_t ref_func;
guint32 unref_func; uint32_t unref_func;
guint32 set_value_func; uint32_t set_value_func;
guint32 get_value_func; uint32_t get_value_func;
guint32 reserved3; uint32_t reserved3;
guint32 reserved4; uint32_t reserved4;
guint16 interfaces[]; uint16_t interfaces[];
} ObjectBlob; } ObjectBlob;
/** /**
@ -1239,28 +1239,28 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 reserved :15; uint16_t reserved :15;
guint32 name; uint32_t name;
guint32 gtype_name; uint32_t gtype_name;
guint32 gtype_init; uint32_t gtype_init;
guint16 gtype_struct; uint16_t gtype_struct;
guint16 n_prerequisites; uint16_t n_prerequisites;
guint16 n_properties; uint16_t n_properties;
guint16 n_methods; uint16_t n_methods;
guint16 n_signals; uint16_t n_signals;
guint16 n_vfuncs; uint16_t n_vfuncs;
guint16 n_constants; uint16_t n_constants;
guint16 padding; uint16_t padding;
guint32 reserved2; uint32_t reserved2;
guint32 reserved3; uint32_t reserved3;
guint16 prerequisites[]; uint16_t prerequisites[];
} InterfaceBlob; } InterfaceBlob;
/** /**
@ -1280,17 +1280,17 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint16 blob_type; uint16_t blob_type;
guint16 deprecated : 1; uint16_t deprecated : 1;
guint16 reserved :15; uint16_t reserved :15;
guint32 name; uint32_t name;
SimpleTypeBlob type; SimpleTypeBlob type;
guint32 size; uint32_t size;
guint32 offset; uint32_t offset;
guint32 reserved2; uint32_t reserved2;
} ConstantBlob; } ConstantBlob;
/** /**
@ -1306,15 +1306,15 @@ typedef struct {
* Since: 2.80 * Since: 2.80
*/ */
typedef struct { typedef struct {
guint32 offset; uint32_t offset;
guint32 name; uint32_t name;
guint32 value; uint32_t value;
} AttributeBlob; } AttributeBlob;
struct _GITypelib { struct _GITypelib {
/*< private >*/ /*< private >*/
guchar *data; uint8_t *data;
gsize len; size_t len;
gboolean owns_memory; gboolean owns_memory;
GMappedFile *mfile; GMappedFile *mfile;
GList *modules; GList *modules;
@ -1322,24 +1322,21 @@ struct _GITypelib {
}; };
DirEntry *gi_typelib_get_dir_entry (GITypelib *typelib, DirEntry *gi_typelib_get_dir_entry (GITypelib *typelib,
guint16 index); uint16_t index);
DirEntry *gi_typelib_get_dir_entry_by_name (GITypelib *typelib, DirEntry *gi_typelib_get_dir_entry_by_name (GITypelib *typelib,
const char *name); const char *name);
DirEntry *gi_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib, DirEntry *gi_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib,
const gchar *gtype_name); const char *gtype_name);
DirEntry *gi_typelib_get_dir_entry_by_error_domain (GITypelib *typelib, DirEntry *gi_typelib_get_dir_entry_by_error_domain (GITypelib *typelib,
GQuark error_domain); GQuark error_domain);
gboolean gi_typelib_matches_gtype_name_prefix (GITypelib *typelib, gboolean gi_typelib_matches_gtype_name_prefix (GITypelib *typelib,
const gchar *gtype_name); const char *gtype_name);
GI_AVAILABLE_IN_ALL
void gi_typelib_check_format (void);
/** /**
* gi_typelib_get_string: * gi_typelib_get_string:
* @typelib: TODO * @typelib: TODO
@ -1350,7 +1347,7 @@ void gi_typelib_check_format (void);
* Returns: TODO * Returns: TODO
* Since: 2.80 * Since: 2.80
*/ */
#define gi_typelib_get_string(typelib,offset) ((const gchar*)&(typelib->data)[(offset)]) #define gi_typelib_get_string(typelib,offset) ((const char*)&(typelib->data)[(offset)])
/** /**
@ -1393,7 +1390,7 @@ gboolean gi_typelib_validate (GITypelib *typelib,
/* defined in gibaseinfo.c */ /* defined in gibaseinfo.c */
AttributeBlob *_attribute_blob_find_first (GIBaseInfo *info, AttributeBlob *_attribute_blob_find_first (GIBaseInfo *info,
guint32 blob_offset); uint32_t blob_offset);
/** /**
* GITypelibHashBuilder: * GITypelibHashBuilder:
@ -1406,17 +1403,17 @@ typedef struct _GITypelibHashBuilder GITypelibHashBuilder;
GITypelibHashBuilder * gi_typelib_hash_builder_new (void); GITypelibHashBuilder * gi_typelib_hash_builder_new (void);
void gi_typelib_hash_builder_add_string (GITypelibHashBuilder *builder, const char *str, guint16 value); void gi_typelib_hash_builder_add_string (GITypelibHashBuilder *builder, const char *str, uint16_t value);
gboolean gi_typelib_hash_builder_prepare (GITypelibHashBuilder *builder); gboolean gi_typelib_hash_builder_prepare (GITypelibHashBuilder *builder);
guint32 gi_typelib_hash_builder_get_buffer_size (GITypelibHashBuilder *builder); uint32_t gi_typelib_hash_builder_get_buffer_size (GITypelibHashBuilder *builder);
void gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, guint8* mem, guint32 size); void gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, uint8_t* mem, uint32_t size);
void gi_typelib_hash_builder_destroy (GITypelibHashBuilder *builder); void gi_typelib_hash_builder_destroy (GITypelibHashBuilder *builder);
guint16 gi_typelib_hash_search (guint8* memory, const char *str, guint n_entries); uint16_t gi_typelib_hash_search (uint8_t* memory, const char *str, uint32_t n_entries);
G_END_DECLS G_END_DECLS

File diff suppressed because it is too large Load Diff

View File

@ -37,13 +37,13 @@ G_BEGIN_DECLS
typedef struct _GITypelib GITypelib; typedef struct _GITypelib GITypelib;
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypelib * gi_typelib_new_from_memory (guint8 *memory, GITypelib * gi_typelib_new_from_memory (uint8_t *memory,
gsize len, size_t len,
GError **error); GError **error);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypelib * gi_typelib_new_from_const_memory (const guint8 *memory, GITypelib * gi_typelib_new_from_const_memory (const uint8_t *memory,
gsize len, size_t len,
GError **error); GError **error);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
@ -55,11 +55,11 @@ void gi_typelib_free (GITypelib *typelib);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_typelib_symbol (GITypelib *typelib, gboolean gi_typelib_symbol (GITypelib *typelib,
const gchar *symbol_name, const char *symbol_name,
gpointer *symbol); void **symbol);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const gchar * gi_typelib_get_namespace (GITypelib *typelib); const char * gi_typelib_get_namespace (GITypelib *typelib);
G_END_DECLS G_END_DECLS

View File

@ -28,6 +28,8 @@
#error "Only <girepository.h> can be included directly." #error "Only <girepository.h> can be included directly."
#endif #endif
#include <stdint.h>
#include <glib.h> #include <glib.h>
#include <glib-object.h> #include <glib-object.h>
@ -113,27 +115,27 @@ GI_AVAILABLE_IN_ALL GType gi_unresolved_info_get_type (void);
union _GIArgument union _GIArgument
{ {
gboolean v_boolean; gboolean v_boolean;
gint8 v_int8; int8_t v_int8;
guint8 v_uint8; uint8_t v_uint8;
gint16 v_int16; int16_t v_int16;
guint16 v_uint16; uint16_t v_uint16;
gint32 v_int32; int32_t v_int32;
guint32 v_uint32; uint32_t v_uint32;
gint64 v_int64; int64_t v_int64;
guint64 v_uint64; uint64_t v_uint64;
gfloat v_float; float v_float;
gdouble v_double; double v_double;
gshort v_short; short v_short;
gushort v_ushort; unsigned short v_ushort;
gint v_int; int v_int;
guint v_uint; unsigned int v_uint;
glong v_long; long v_long;
gulong v_ulong; unsigned long v_ulong;
gssize v_ssize; gssize v_ssize;
gsize v_size; size_t v_size;
gchar * v_string; char *v_string;
gpointer v_pointer; void *v_pointer;
}; };
/** /**

View File

@ -53,7 +53,7 @@
* Returns: number of fields * Returns: number of fields
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_union_info_get_n_fields (GIUnionInfo *info) gi_union_info_get_n_fields (GIUnionInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -75,7 +75,7 @@ gi_union_info_get_n_fields (GIUnionInfo *info)
*/ */
GIFieldInfo * GIFieldInfo *
gi_union_info_get_field (GIUnionInfo *info, gi_union_info_get_field (GIUnionInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
@ -94,7 +94,7 @@ gi_union_info_get_field (GIUnionInfo *info,
* Returns: number of methods * Returns: number of methods
* Since: 2.80 * Since: 2.80
*/ */
guint unsigned int
gi_union_info_get_n_methods (GIUnionInfo *info) gi_union_info_get_n_methods (GIUnionInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -116,12 +116,12 @@ gi_union_info_get_n_methods (GIUnionInfo *info)
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_union_info_get_method (GIUnionInfo *info, gi_union_info_get_method (GIUnionInfo *info,
guint n) unsigned int n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset]; UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
gint offset; size_t offset;
offset = rinfo->offset + header->union_blob_size offset = rinfo->offset + header->union_blob_size
+ blob->n_fields * header->field_blob_size + blob->n_fields * header->field_blob_size
@ -157,7 +157,7 @@ gi_union_info_is_discriminated (GIUnionInfo *info)
* Returns: offset, in bytes, of the discriminator * Returns: offset, in bytes, of the discriminator
* Since: 2.80 * Since: 2.80
*/ */
guint size_t
gi_union_info_get_discriminator_offset (GIUnionInfo *info) gi_union_info_get_discriminator_offset (GIUnionInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -202,7 +202,7 @@ gi_union_info_get_discriminator_type (GIUnionInfo *info)
*/ */
GIConstantInfo * GIConstantInfo *
gi_union_info_get_discriminator (GIUnionInfo *info, gi_union_info_get_discriminator (GIUnionInfo *info,
guint n) size_t n)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset]; UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
@ -210,12 +210,12 @@ gi_union_info_get_discriminator (GIUnionInfo *info,
if (blob->discriminated) if (blob->discriminated)
{ {
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
gint offset; size_t offset;
offset = rinfo->offset + header->union_blob_size offset = rinfo->offset + header->union_blob_size
+ blob->n_fields * header->field_blob_size + blob->n_fields * header->field_blob_size
+ blob->n_functions * header->function_blob_size + blob->n_functions * header->function_blob_size
+ n * header->constant_blob_size; + n * header->constant_blob_size;
return (GIConstantInfo *) gi_info_new (GI_INFO_TYPE_CONSTANT, (GIBaseInfo*)info, return (GIConstantInfo *) gi_info_new (GI_INFO_TYPE_CONSTANT, (GIBaseInfo*)info,
rinfo->typelib, offset); rinfo->typelib, offset);
@ -238,9 +238,9 @@ gi_union_info_get_discriminator (GIUnionInfo *info,
*/ */
GIFunctionInfo * GIFunctionInfo *
gi_union_info_find_method (GIUnionInfo *info, gi_union_info_find_method (GIUnionInfo *info,
const gchar *name) const char *name)
{ {
gint offset; size_t offset;
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset]; UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
@ -260,7 +260,7 @@ gi_union_info_find_method (GIUnionInfo *info,
* Returns: size of the union, in bytes * Returns: size of the union, in bytes
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_union_info_get_size (GIUnionInfo *info) gi_union_info_get_size (GIUnionInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -278,7 +278,7 @@ gi_union_info_get_size (GIUnionInfo *info)
* Returns: required alignment, in bytes * Returns: required alignment, in bytes
* Since: 2.80 * Since: 2.80
*/ */
gsize size_t
gi_union_info_get_alignment (GIUnionInfo *info) gi_union_info_get_alignment (GIUnionInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;

View File

@ -44,41 +44,41 @@ G_BEGIN_DECLS
(gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_UNION) (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_UNION)
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_union_info_get_n_fields (GIUnionInfo *info); unsigned int gi_union_info_get_n_fields (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFieldInfo * gi_union_info_get_field (GIUnionInfo *info, GIFieldInfo * gi_union_info_get_field (GIUnionInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_union_info_get_n_methods (GIUnionInfo *info); unsigned int gi_union_info_get_n_methods (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_union_info_get_method (GIUnionInfo *info, GIFunctionInfo * gi_union_info_get_method (GIUnionInfo *info,
guint n); unsigned int n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gboolean gi_union_info_is_discriminated (GIUnionInfo *info); gboolean gi_union_info_is_discriminated (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_union_info_get_discriminator_offset (GIUnionInfo *info); size_t gi_union_info_get_discriminator_offset (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GITypeInfo * gi_union_info_get_discriminator_type (GIUnionInfo *info); GITypeInfo * gi_union_info_get_discriminator_type (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIConstantInfo * gi_union_info_get_discriminator (GIUnionInfo *info, GIConstantInfo * gi_union_info_get_discriminator (GIUnionInfo *info,
guint n); size_t n);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_union_info_find_method (GIUnionInfo *info, GIFunctionInfo * gi_union_info_find_method (GIUnionInfo *info,
const gchar *name); const char *name);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_union_info_get_size (GIUnionInfo *info); size_t gi_union_info_get_size (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gsize gi_union_info_get_alignment (GIUnionInfo *info); size_t gi_union_info_get_alignment (GIUnionInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
const char * gi_union_info_get_copy_function_name (GIUnionInfo *info); const char * gi_union_info_get_copy_function_name (GIUnionInfo *info);

View File

@ -39,7 +39,7 @@ G_BEGIN_DECLS
* *
* Since: 2.80 * Since: 2.80
*/ */
#define GI_IS_UNRESOLVED_INFO(info) \ #define GI_IS_UNRESOLVED_INFO(info) \
(gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_UNRESOLVED) (gi_base_info_get_info_type ((GIBaseInfo*) info) == GI_INFO_TYPE_UNRESOLVED)
G_END_DECLS G_END_DECLS

View File

@ -47,21 +47,21 @@
GIVFuncInfo * GIVFuncInfo *
gi_base_info_find_vfunc (GIRealInfo *rinfo, gi_base_info_find_vfunc (GIRealInfo *rinfo,
guint32 offset, uint32_t offset,
guint n_vfuncs, uint16_t n_vfuncs,
const gchar *name) const char *name)
{ {
/* FIXME hash */ /* FIXME hash */
Header *header = (Header *)rinfo->typelib->data; Header *header = (Header *)rinfo->typelib->data;
for (guint i = 0; i < n_vfuncs; i++) for (uint16_t i = 0; i < n_vfuncs; i++)
{ {
VFuncBlob *fblob = (VFuncBlob *)&rinfo->typelib->data[offset]; VFuncBlob *fblob = (VFuncBlob *)&rinfo->typelib->data[offset];
const gchar *fname = (const gchar *)&rinfo->typelib->data[fblob->name]; const char *fname = (const char *)&rinfo->typelib->data[fblob->name];
if (strcmp (name, fname) == 0) if (strcmp (name, fname) == 0)
return (GIVFuncInfo *) gi_info_new (GI_INFO_TYPE_VFUNC, (GIBaseInfo*) rinfo, return (GIVFuncInfo *) gi_info_new (GI_INFO_TYPE_VFUNC, (GIBaseInfo*) rinfo,
rinfo->typelib, offset); rinfo->typelib, offset);
offset += header->vfunc_blob_size; offset += header->vfunc_blob_size;
} }
@ -121,7 +121,7 @@ gi_vfunc_info_get_flags (GIVFuncInfo *info)
* Returns: the struct offset or `0xFFFF` if its unknown * Returns: the struct offset or `0xFFFF` if its unknown
* Since: 2.80 * Since: 2.80
*/ */
guint size_t
gi_vfunc_info_get_offset (GIVFuncInfo *info) gi_vfunc_info_get_offset (GIVFuncInfo *info)
{ {
GIRealInfo *rinfo = (GIRealInfo *)info; GIRealInfo *rinfo = (GIRealInfo *)info;
@ -217,7 +217,7 @@ gi_vfunc_info_get_invoker (GIVFuncInfo *info)
* Returns: address to a function * Returns: address to a function
* Since: 2.80 * Since: 2.80
*/ */
gpointer void *
gi_vfunc_info_get_address (GIVFuncInfo *vfunc_info, gi_vfunc_info_get_address (GIVFuncInfo *vfunc_info,
GType implementor_gtype, GType implementor_gtype,
GError **error) GError **error)
@ -228,8 +228,8 @@ gi_vfunc_info_get_address (GIVFuncInfo *vfunc_info,
GIStructInfo *struct_info; GIStructInfo *struct_info;
GIFieldInfo *field_info = NULL; GIFieldInfo *field_info = NULL;
int length, i, offset; int length, i, offset;
gpointer implementor_class, implementor_vtable; void *implementor_class, *implementor_vtable;
gpointer func = NULL; void *func = NULL;
g_return_val_if_fail (vfunc_info != NULL, NULL); g_return_val_if_fail (vfunc_info != NULL, NULL);
g_return_val_if_fail (GI_IS_VFUNC_INFO (vfunc_info), NULL); g_return_val_if_fail (GI_IS_VFUNC_INFO (vfunc_info), NULL);
@ -288,7 +288,7 @@ gi_vfunc_info_get_address (GIVFuncInfo *vfunc_info,
} }
offset = gi_field_info_get_offset (field_info); offset = gi_field_info_get_offset (field_info);
func = *(gpointer*) G_STRUCT_MEMBER_P (implementor_vtable, offset); func = *(void**) G_STRUCT_MEMBER_P (implementor_vtable, offset);
g_type_class_unref (implementor_class); g_type_class_unref (implementor_class);
gi_base_info_unref ((GIBaseInfo *) field_info); gi_base_info_unref ((GIBaseInfo *) field_info);
@ -341,13 +341,13 @@ gboolean
gi_vfunc_info_invoke (GIVFuncInfo *info, gi_vfunc_info_invoke (GIVFuncInfo *info,
GType implementor, GType implementor,
const GIArgument *in_args, const GIArgument *in_args,
gsize n_in_args, size_t n_in_args,
GIArgument *out_args, GIArgument *out_args,
gsize n_out_args, size_t n_out_args,
GIArgument *return_value, GIArgument *return_value,
GError **error) GError **error)
{ {
gpointer func; void *func;
GError *local_error = NULL; GError *local_error = NULL;
g_return_val_if_fail (info != NULL, FALSE); g_return_val_if_fail (info != NULL, FALSE);

View File

@ -47,7 +47,7 @@ GI_AVAILABLE_IN_ALL
GIVFuncInfoFlags gi_vfunc_info_get_flags (GIVFuncInfo *info); GIVFuncInfoFlags gi_vfunc_info_get_flags (GIVFuncInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
guint gi_vfunc_info_get_offset (GIVFuncInfo *info); size_t gi_vfunc_info_get_offset (GIVFuncInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
GISignalInfo * gi_vfunc_info_get_signal (GIVFuncInfo *info); GISignalInfo * gi_vfunc_info_get_signal (GIVFuncInfo *info);
@ -56,7 +56,7 @@ GI_AVAILABLE_IN_ALL
GIFunctionInfo * gi_vfunc_info_get_invoker (GIVFuncInfo *info); GIFunctionInfo * gi_vfunc_info_get_invoker (GIVFuncInfo *info);
GI_AVAILABLE_IN_ALL GI_AVAILABLE_IN_ALL
gpointer gi_vfunc_info_get_address (GIVFuncInfo *info, void * gi_vfunc_info_get_address (GIVFuncInfo *info,
GType implementor_gtype, GType implementor_gtype,
GError **error); GError **error);
@ -64,9 +64,9 @@ GI_AVAILABLE_IN_ALL
gboolean gi_vfunc_info_invoke (GIVFuncInfo *info, gboolean gi_vfunc_info_invoke (GIVFuncInfo *info,
GType implementor, GType implementor,
const GIArgument *in_args, const GIArgument *in_args,
gsize n_in_args, size_t n_in_args,
GIArgument *out_args, GIArgument *out_args,
gsize n_out_args, size_t n_out_args,
GIArgument *return_value, GIArgument *return_value,
GError **error); GError **error);

View File

@ -48,7 +48,7 @@
* INT32 mph_size * INT32 mph_size
* MPH (mph_size bytes) * MPH (mph_size bytes)
* (padding for alignment to uint32 if necessary) * (padding for alignment to uint32 if necessary)
* INDEX (array of guint16) * INDEX (array of uint16_t)
* *
* Because BDZ is not order preserving, we need a lookaside table which * Because BDZ is not order preserving, we need a lookaside table which
* maps the hash value into the directory index. * maps the hash value into the directory index.
@ -59,8 +59,8 @@ struct _GITypelibHashBuilder {
gboolean buildable; gboolean buildable;
cmph_t *c; cmph_t *c;
GHashTable *strings; GHashTable *strings;
guint32 dirmap_offset; uint32_t dirmap_offset;
guint32 packed_size; uint32_t packed_size;
}; };
GITypelibHashBuilder * GITypelibHashBuilder *
@ -75,10 +75,10 @@ gi_typelib_hash_builder_new (void)
void void
gi_typelib_hash_builder_add_string (GITypelibHashBuilder *builder, gi_typelib_hash_builder_add_string (GITypelibHashBuilder *builder,
const char *str, const char *str,
guint16 value) uint16_t value)
{ {
g_return_if_fail (builder->c == NULL); g_return_if_fail (builder->c == NULL);
g_hash_table_insert (builder->strings, g_strdup (str), GUINT_TO_POINTER ((guint) value)); g_hash_table_insert (builder->strings, g_strdup (str), GUINT_TO_POINTER (value));
} }
gboolean gboolean
@ -86,12 +86,12 @@ gi_typelib_hash_builder_prepare (GITypelibHashBuilder *builder)
{ {
char **strs; char **strs;
GHashTableIter hashiter; GHashTableIter hashiter;
gpointer key, value; void *key, *value;
cmph_io_adapter_t *io; cmph_io_adapter_t *io;
cmph_config_t *config; cmph_config_t *config;
guint32 num_elts; uint32_t num_elts;
guint32 offset; uint32_t offset;
guint i; unsigned i;
if (builder->prepared) if (builder->prepared)
return builder->buildable; return builder->buildable;
@ -127,9 +127,9 @@ gi_typelib_hash_builder_prepare (GITypelibHashBuilder *builder)
g_assert (cmph_size (builder->c) == num_elts); g_assert (cmph_size (builder->c) == num_elts);
/* Pack a size counter at front */ /* Pack a size counter at front */
offset = sizeof(guint32) + cmph_packed_size (builder->c); offset = sizeof (uint32_t) + cmph_packed_size (builder->c);
builder->dirmap_offset = ALIGN_VALUE (offset, 4); builder->dirmap_offset = ALIGN_VALUE (offset, 4);
builder->packed_size = builder->dirmap_offset + (num_elts * sizeof(guint16)); builder->packed_size = builder->dirmap_offset + (num_elts * sizeof (uint16_t));
out: out:
g_strfreev (strs); g_strfreev (strs);
cmph_config_destroy (config); cmph_config_destroy (config);
@ -137,7 +137,7 @@ gi_typelib_hash_builder_prepare (GITypelibHashBuilder *builder)
return builder->buildable; return builder->buildable;
} }
guint32 uint32_t
gi_typelib_hash_builder_get_buffer_size (GITypelibHashBuilder *builder) gi_typelib_hash_builder_get_buffer_size (GITypelibHashBuilder *builder)
{ {
g_return_val_if_fail (builder != NULL, 0); g_return_val_if_fail (builder != NULL, 0);
@ -148,15 +148,15 @@ gi_typelib_hash_builder_get_buffer_size (GITypelibHashBuilder *builder)
} }
void void
gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, guint8* mem, guint32 len) gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, uint8_t* mem, uint32_t len)
{ {
guint16 *table; uint16_t *table;
GHashTableIter hashiter; GHashTableIter hashiter;
gpointer key, value; void *key, *value;
#ifndef G_DISABLE_ASSERT #ifndef G_DISABLE_ASSERT
guint32 num_elts; uint32_t num_elts;
#endif #endif
guint8 *packed_mem; uint8_t *packed_mem;
g_return_if_fail (builder != NULL); g_return_if_fail (builder != NULL);
g_return_if_fail (builder->prepared); g_return_if_fail (builder->prepared);
@ -167,11 +167,11 @@ gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, guint8* mem, guint3
memset (mem, 0, len); memset (mem, 0, len);
*((guint32*) mem) = builder->dirmap_offset; *((uint32_t*) mem) = builder->dirmap_offset;
packed_mem = (guint8*)(mem + sizeof(guint32)); packed_mem = (uint8_t*)(mem + sizeof (uint32_t));
cmph_pack (builder->c, packed_mem); cmph_pack (builder->c, packed_mem);
table = (guint16*) (mem + builder->dirmap_offset); table = (uint16_t*) (mem + builder->dirmap_offset);
#ifndef G_DISABLE_ASSERT #ifndef G_DISABLE_ASSERT
num_elts = g_hash_table_size (builder->strings); num_elts = g_hash_table_size (builder->strings);
@ -180,8 +180,8 @@ gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, guint8* mem, guint3
while (g_hash_table_iter_next (&hashiter, &key, &value)) while (g_hash_table_iter_next (&hashiter, &key, &value))
{ {
const char *str = key; const char *str = key;
guint16 strval = (guint16)GPOINTER_TO_UINT(value); uint16_t strval = (uint16_t)GPOINTER_TO_UINT(value);
guint32 hashv; uint32_t hashv;
hashv = cmph_search_packed (packed_mem, str, strlen (str)); hashv = cmph_search_packed (packed_mem, str, strlen (str));
g_assert (hashv < num_elts); g_assert (hashv < num_elts);
@ -201,16 +201,16 @@ gi_typelib_hash_builder_destroy (GITypelibHashBuilder *builder)
g_slice_free (GITypelibHashBuilder, builder); g_slice_free (GITypelibHashBuilder, builder);
} }
guint16 uint16_t
gi_typelib_hash_search (guint8* memory, const char *str, guint n_entries) gi_typelib_hash_search (uint8_t* memory, const char *str, uint32_t n_entries)
{ {
guint32 *mph; uint32_t *mph;
guint16 *table; uint16_t *table;
guint32 dirmap_offset; uint32_t dirmap_offset;
guint32 offset; uint32_t offset;
g_assert ((((size_t)memory) & 0x3) == 0); g_assert ((((size_t)memory) & 0x3) == 0);
mph = ((guint32*)memory)+1; mph = ((uint32_t*)memory)+1;
offset = cmph_search_packed (mph, str, strlen (str)); offset = cmph_search_packed (mph, str, strlen (str));
@ -222,8 +222,8 @@ gi_typelib_hash_search (guint8* memory, const char *str, guint n_entries)
if (offset >= n_entries) if (offset >= n_entries)
offset = 0; offset = 0;
dirmap_offset = *((guint32*)memory); dirmap_offset = *((uint32_t*)memory);
table = (guint16*) (memory + dirmap_offset); table = (uint16_t*) (memory + dirmap_offset);
return table[offset]; return table[offset];
} }

View File

@ -30,7 +30,7 @@ build (void)
cmph_io_adapter_t *io; cmph_io_adapter_t *io;
char **strings; char **strings;
cmph_t *c; cmph_t *c;
guint32 size; uint32_t size;
strings = g_strsplit ("foo,bar,baz", ",", -1); strings = g_strsplit ("foo,bar,baz", ",", -1);
@ -50,15 +50,14 @@ build (void)
} }
static void static void
assert_hashes_unique (guint n_hashes, assert_hashes_unique (size_t n_hashes,
guint32* hashes) uint32_t* hashes)
{ {
guint i; size_t i;
for (i = 0; i < n_hashes; i++) for (i = 0; i < n_hashes; i++)
{ {
guint j = 0; for (size_t j = 0; j < n_hashes; j++)
for (j = 0; j < n_hashes; j++)
{ {
if (j != i) if (j != i)
g_assert_cmpuint (hashes[i], !=, hashes[j]); g_assert_cmpuint (hashes[i], !=, hashes[j]);
@ -70,10 +69,10 @@ static void
test_search (void) test_search (void)
{ {
cmph_t *c = build(); cmph_t *c = build();
guint i; size_t i;
guint32 hash; uint32_t hash;
guint32 hashes[3]; uint32_t hashes[3];
guint32 size; uint32_t size;
size = cmph_size (c); size = cmph_size (c);
@ -102,12 +101,12 @@ static void
test_search_packed (void) test_search_packed (void)
{ {
cmph_t *c = build(); cmph_t *c = build();
guint32 bufsize; size_t i;
guint i; uint32_t bufsize;
guint32 hash; uint32_t hash;
guint32 hashes[3]; uint32_t hashes[3];
guint32 size; uint32_t size;
guint8 *buf; uint8_t *buf;
bufsize = cmph_packed_size (c); bufsize = cmph_packed_size (c);
buf = g_malloc (bufsize); buf = g_malloc (bufsize);
@ -142,15 +141,11 @@ test_search_packed (void)
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
gint ret;
g_test_init (&argc, &argv, NULL); g_test_init (&argc, &argv, NULL);
g_test_add_func ("/cmph-bdz/search", test_search); g_test_add_func ("/cmph-bdz/search", test_search);
g_test_add_func ("/cmph-bdz/search-packed", test_search_packed); g_test_add_func ("/cmph-bdz/search-packed", test_search_packed);
ret = g_test_run (); return g_test_run ();
return ret;
} }

View File

@ -21,6 +21,7 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#include <stdint.h>
#include <glib-object.h> #include <glib-object.h>
#include "gitypelib-internal.h" #include "gitypelib-internal.h"
@ -28,8 +29,8 @@ static void
test_build_retrieve (void) test_build_retrieve (void)
{ {
GITypelibHashBuilder *builder; GITypelibHashBuilder *builder;
guint32 bufsize; uint32_t bufsize;
guint8* buf; uint8_t* buf;
builder = gi_typelib_hash_builder_new (); builder = gi_typelib_hash_builder_new ();