diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2012-07-24 16:09:38 +0800 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2012-10-27 12:06:09 -0400 |
commit | af578e81c861cf31f494fc830ba02ca41d7c7613 (patch) | |
tree | 1c45330f3a7fca45da2e3d654c9c10b03eecb54d /girepository | |
parent | f2e54769ca9f72401d438b66fd6144986ee288f3 (diff) | |
download | gobject-introspection-af578e81c861cf31f494fc830ba02ca41d7c7613.tar.gz |
girepository: Remove C99ism and other updates
-Make code using libgirepository_internals relocatable on Windows,
like what is done in the GTK+ stack, and the girepository DLL.
-Remove C99isms
-"interface" is a reserved keyword on certain compilers, so change that to
"giinterface"
https://bugzilla.gnome.org/show_bug.cgi?id=681820
Diffstat (limited to 'girepository')
-rw-r--r-- | girepository/girmodule.c | 3 | ||||
-rw-r--r-- | girepository/girnode.c | 15 | ||||
-rw-r--r-- | girepository/girnode.h | 2 | ||||
-rw-r--r-- | girepository/giroffsets.c | 4 | ||||
-rw-r--r-- | girepository/girparser.c | 33 |
5 files changed, 42 insertions, 15 deletions
diff --git a/girepository/girmodule.c b/girepository/girmodule.c index af71f369..05c8987f 100644 --- a/girepository/girmodule.c +++ b/girepository/girmodule.c @@ -261,8 +261,9 @@ add_directory_index_section (guint8 *data, GIrModule *module, guint32 *offset2) for (i = 0; i < n_interfaces; i++) { + const char *str; entry = (DirEntry *)&data[header->directory + (i * header->entry_blob_size)]; - const char *str = (const char *) (&data[entry->name]); + str = (const char *) (&data[entry->name]); _gi_typelib_hash_builder_add_string (dirindex_builder, str, i); } diff --git a/girepository/girnode.c b/girepository/girnode.c index 881aa9be..afb71e57 100644 --- a/girepository/girnode.c +++ b/girepository/girnode.c @@ -28,6 +28,11 @@ #include "girnode.h" #include "gitypelib-internal.h" +#ifdef _MSC_VER +#define strtoll _strtoi64 +#define strtoull _strtoui64 +#endif + static gulong string_count = 0; static gulong unique_string_count = 0; static gulong string_size = 0; @@ -228,7 +233,7 @@ _g_ir_node_free (GIrNode *node) _g_ir_node_free ((GIrNode *)type->parameter_type1); _g_ir_node_free ((GIrNode *)type->parameter_type2); - g_free (type->interface); + g_free (type->giinterface); g_strfreev (type->errors); } @@ -1244,7 +1249,7 @@ serialize_type (GIrTypelibBuild *build, GIrNode *iface; gchar *name; - iface = find_entry_node (build, node->interface, NULL); + iface = find_entry_node (build, node->giinterface, NULL); if (iface) { if (iface->type == G_IR_NODE_XREF) @@ -1253,8 +1258,8 @@ serialize_type (GIrTypelibBuild *build, } else { - g_warning ("Interface for type reference %s not found", node->interface); - name = node->interface; + g_warning ("Interface for type reference %s not found", node->giinterface); + name = node->giinterface; } g_string_append_printf (str, "%s%s", name, @@ -1483,7 +1488,7 @@ _g_ir_node_build_typelib (GIrNode *node, iface->reserved = 0; iface->tag = type->tag; iface->reserved2 = 0; - iface->interface = find_entry (build, type->interface); + iface->interface = find_entry (build, type->giinterface); } break; diff --git a/girepository/girnode.h b/girepository/girnode.h index d89847ac..07b084c4 100644 --- a/girepository/girnode.h +++ b/girepository/girnode.h @@ -133,7 +133,7 @@ struct _GIrNodeType GIrNodeType *parameter_type1; GIrNodeType *parameter_type2; - gchar *interface; + gchar *giinterface; gchar **errors; }; diff --git a/girepository/giroffsets.c b/girepository/giroffsets.c index e3c9d7f5..368332ea 100644 --- a/girepository/giroffsets.c +++ b/girepository/giroffsets.c @@ -190,10 +190,10 @@ get_interface_size_alignment (GIrTypelibBuild *build, { GIrNode *iface; - iface = _g_ir_find_node (build, ((GIrNode*)type)->module, type->interface); + iface = _g_ir_find_node (build, ((GIrNode*)type)->module, type->giinterface); if (!iface) { - _g_ir_module_fatal (build, 0, "Can't resolve type '%s' for %s", type->interface, who); + _g_ir_module_fatal (build, 0, "Can't resolve type '%s' for %s", type->giinterface, who); *size = -1; *alignment = -1; return FALSE; diff --git a/girepository/girparser.c b/girepository/girparser.c index fa0de1f8..ce88a691 100644 --- a/girepository/girparser.c +++ b/girepository/girparser.c @@ -36,6 +36,24 @@ */ #define SUPPORTED_GIR_VERSION "1.2" +#ifdef G_OS_WIN32 + +#include <windows.h> + +#ifdef GIR_DIR +#undef GIR_DIR +#endif + +/* GIR_DIR is used only in code called just once, + * so no problem leaking this + */ +#define GIR_DIR \ + g_build_filename (g_win32_get_package_installation_directory_of_module(NULL), \ + "share", \ + GIR_SUFFIX, \ + NULL) +#endif + struct _GIrParser { gchar **includes; @@ -329,10 +347,12 @@ state_switch (ParseContext *ctx, ParseState newstate) static GIrNode * pop_node (ParseContext *ctx) { + GSList *top; + GIrNode *node; g_assert (ctx->node_stack != 0); - GSList *top = ctx->node_stack; - GIrNode *node = top->data; + top = ctx->node_stack; + node = top->data; g_debug ("popping node %d %s", node->type, node->name); ctx->node_stack = top->next; @@ -552,8 +572,8 @@ parse_type_internal (GIrModule *module, if (*str == '<') { - (str)++; char *tmp, *end; + (str)++; end = strchr (str, '>'); tmp = g_strndup (str, end - str); @@ -565,9 +585,10 @@ parse_type_internal (GIrModule *module, } else { + const char *start; type->tag = GI_TYPE_TAG_INTERFACE; type->is_interface = TRUE; - const char *start = str; + start = str; /* must be an interface type */ while (g_ascii_isalnum (*str) || @@ -577,7 +598,7 @@ parse_type_internal (GIrModule *module, *str == ':') (str)++; - type->interface = g_strndup (start, str - start); + type->giinterface = g_strndup (start, str - start); } if (next) @@ -1965,7 +1986,7 @@ start_type (GMarkupParseContext *context, * doesn't look like a pointer, but is internally. */ if (typenode->tag == GI_TYPE_TAG_INTERFACE && - is_disguised_structure (ctx, typenode->interface)) + is_disguised_structure (ctx, typenode->giinterface)) pointer_depth++; if (pointer_depth > 0) |