From 9851a23241ebc161bc4a899a135e3e1ad32c3a28 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 12 Aug 2008 15:34:27 +0000 Subject: [PATCH] Remove usage of (GAPI-oriented) TypeTag in favor of GITypeTag from 2008-08-12 Colin Walters * girepository/girparser.c, girepository/gtypelib.c, girepository/gtypelib.h, girepository/girnode.c: Remove usage of (GAPI-oriented) TypeTag in favor of GITypeTag from girepository.h. svn path=/trunk/; revision=347 --- ChangeLog | 7 +++ girepository/girnode.c | 72 ++++++++++++++-------------- girepository/girparser.c | 121 ++++++++++++++++++++++++----------------------- girepository/gtypelib.c | 16 +++---- girepository/gtypelib.h | 36 -------------- 5 files changed, 113 insertions(+), 139 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87d3796..a451fc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-12 Colin Walters + + * girepository/girparser.c, girepository/gtypelib.c, + girepository/gtypelib.h, girepository/girnode.c: + Remove usage of (GAPI-oriented) TypeTag in favor of + GITypeTag from girepository.h. + 2008-08-10 Colin Walters * tests/roundtrips.sh: Use the correct tests. diff --git a/girepository/girnode.c b/girepository/girnode.c index 7734bf9..2aeba30 100644 --- a/girepository/girnode.c +++ b/girepository/girnode.c @@ -650,7 +650,7 @@ g_ir_node_get_full_size_internal (GIrNode *parent, GIrNode *node) case G_IR_NODE_TYPE: { GIrNodeType *type = (GIrNodeType *)node; - if (type->tag < TYPE_TAG_ARRAY) + if (type->tag < GI_TYPE_TAG_ARRAY) size = 4; else { @@ -659,28 +659,28 @@ g_ir_node_get_full_size_internal (GIrNode *parent, GIrNode *node) switch (type->tag) { - case TYPE_TAG_ARRAY: + case GI_TYPE_TAG_ARRAY: size = 4 + 4; if (type->parameter_type1) size += g_ir_node_get_full_size_internal (node, (GIrNode *)type->parameter_type1); break; - case TYPE_TAG_INTERFACE: + case GI_TYPE_TAG_INTERFACE: size = 4 + 4; break; - case TYPE_TAG_LIST: - case TYPE_TAG_SLIST: + case GI_TYPE_TAG_GLIST: + case GI_TYPE_TAG_GSLIST: size = 4 + 4; if (type->parameter_type1) size += g_ir_node_get_full_size_internal (node, (GIrNode *)type->parameter_type1); break; - case TYPE_TAG_HASH: + case GI_TYPE_TAG_GHASH: size = 4 + 4 + 4; if (type->parameter_type1) size += g_ir_node_get_full_size_internal (node, (GIrNode *)type->parameter_type1); if (type->parameter_type2) size += g_ir_node_get_full_size_internal (node, (GIrNode *)type->parameter_type2); break; - case TYPE_TAG_ERROR: + case GI_TYPE_TAG_ERROR: { gint n; @@ -1224,7 +1224,8 @@ g_ir_node_build_typelib (GIrNode *node, g_assert (node != NULL); - g_debug ("build_typelib (%s)", + g_debug ("build_typelib: %s (%s)", + node->name, g_ir_node_type_to_string (node->type)); switch (node->type) @@ -1236,9 +1237,8 @@ g_ir_node_build_typelib (GIrNode *node, *offset += 4; - if (type->tag < TYPE_TAG_ARRAY || - type->tag == TYPE_TAG_STRING || - type->tag == TYPE_TAG_ANY) + if (type->tag < GI_TYPE_TAG_ARRAY || + type->tag == GI_TYPE_TAG_UTF8) { blob->reserved = 0; blob->reserved2 = 0; @@ -1271,7 +1271,7 @@ g_ir_node_build_typelib (GIrNode *node, blob->offset = *offset2; switch (type->tag) { - case TYPE_TAG_ARRAY: + case GI_TYPE_TAG_ARRAY: { ArrayTypeBlob *array = (ArrayTypeBlob *)&data[*offset2]; guint32 pos; @@ -1293,7 +1293,7 @@ g_ir_node_build_typelib (GIrNode *node, } break; - case TYPE_TAG_INTERFACE: + case GI_TYPE_TAG_INTERFACE: { InterfaceTypeBlob *iface = (InterfaceTypeBlob *)&data[*offset2]; *offset2 += 4; @@ -1307,8 +1307,8 @@ g_ir_node_build_typelib (GIrNode *node, } break; - case TYPE_TAG_LIST: - case TYPE_TAG_SLIST: + case GI_TYPE_TAG_GLIST: + case GI_TYPE_TAG_GSLIST: { ParamTypeBlob *param = (ParamTypeBlob *)&data[*offset2]; guint32 pos; @@ -1328,7 +1328,7 @@ g_ir_node_build_typelib (GIrNode *node, } break; - case TYPE_TAG_HASH: + case GI_TYPE_TAG_GHASH: { ParamTypeBlob *param = (ParamTypeBlob *)&data[*offset2]; guint32 pos; @@ -1351,7 +1351,7 @@ g_ir_node_build_typelib (GIrNode *node, } break; - case TYPE_TAG_ERROR: + case GI_TYPE_TAG_ERROR: { ErrorTypeBlob *blob = (ErrorTypeBlob *)&data[*offset2]; gint i; @@ -2095,70 +2095,70 @@ g_ir_node_build_typelib (GIrNode *node, blob->offset = *offset2; switch (constant->type->tag) { - case TYPE_TAG_BOOLEAN: + case GI_TYPE_TAG_BOOLEAN: blob->size = 4; *(gboolean*)&data[blob->offset] = parse_boolean_value (constant->value); break; - case TYPE_TAG_INT8: + case GI_TYPE_TAG_INT8: blob->size = 1; *(gint8*)&data[blob->offset] = (gint8) parse_int_value (constant->value); break; - case TYPE_TAG_UINT8: + case GI_TYPE_TAG_UINT8: blob->size = 1; *(guint8*)&data[blob->offset] = (guint8) parse_uint_value (constant->value); break; - case TYPE_TAG_INT16: + case GI_TYPE_TAG_INT16: blob->size = 2; *(gint16*)&data[blob->offset] = (gint16) parse_int_value (constant->value); break; - case TYPE_TAG_UINT16: + case GI_TYPE_TAG_UINT16: blob->size = 2; *(guint16*)&data[blob->offset] = (guint16) parse_uint_value (constant->value); break; - case TYPE_TAG_INT32: + case GI_TYPE_TAG_INT32: blob->size = 4; *(gint32*)&data[blob->offset] = (gint32) parse_int_value (constant->value); break; - case TYPE_TAG_UINT32: + case GI_TYPE_TAG_UINT32: blob->size = 4; *(guint32*)&data[blob->offset] = (guint32) parse_uint_value (constant->value); break; - case TYPE_TAG_INT64: + case GI_TYPE_TAG_INT64: blob->size = 8; *(gint64*)&data[blob->offset] = (gint64) parse_int_value (constant->value); break; - case TYPE_TAG_UINT64: + case GI_TYPE_TAG_UINT64: blob->size = 8; *(guint64*)&data[blob->offset] = (guint64) parse_uint_value (constant->value); break; - case TYPE_TAG_INT: + case GI_TYPE_TAG_INT: blob->size = sizeof (gint); *(gint*)&data[blob->offset] = (gint) parse_int_value (constant->value); break; - case TYPE_TAG_UINT: + case GI_TYPE_TAG_UINT: blob->size = sizeof (guint); *(gint*)&data[blob->offset] = (guint) parse_uint_value (constant->value); break; - case TYPE_TAG_SSIZE: /* FIXME */ - case TYPE_TAG_LONG: + case GI_TYPE_TAG_SSIZE: /* FIXME */ + case GI_TYPE_TAG_LONG: blob->size = sizeof (glong); *(glong*)&data[blob->offset] = (glong) parse_int_value (constant->value); break; - case TYPE_TAG_SIZE: /* FIXME */ - case TYPE_TAG_ULONG: + case GI_TYPE_TAG_SIZE: /* FIXME */ + case GI_TYPE_TAG_ULONG: blob->size = sizeof (gulong); *(gulong*)&data[blob->offset] = (gulong) parse_uint_value (constant->value); break; - case TYPE_TAG_FLOAT: + case GI_TYPE_TAG_FLOAT: blob->size = sizeof (gfloat); *(gfloat*)&data[blob->offset] = (gfloat) parse_float_value (constant->value); break; - case TYPE_TAG_DOUBLE: + case GI_TYPE_TAG_DOUBLE: blob->size = sizeof (gdouble); *(gdouble*)&data[blob->offset] = (gdouble) parse_float_value (constant->value); break; - case TYPE_TAG_UTF8: - case TYPE_TAG_FILENAME: + case GI_TYPE_TAG_UTF8: + case GI_TYPE_TAG_FILENAME: blob->size = strlen (constant->value) + 1; memcpy (&data[blob->offset], constant->value, blob->size); break; diff --git a/girepository/girparser.c b/girepository/girparser.c index 565542c..3649c72 100644 --- a/girepository/girparser.c +++ b/girepository/girparser.c @@ -133,59 +133,60 @@ parse_type_internal (gchar *str, gchar **rest) gint tag; gboolean pointer; } basic[] = { - { "void", TYPE_TAG_VOID, 0 }, - { "gpointer", TYPE_TAG_VOID, 1 }, - { "bool", TYPE_TAG_BOOLEAN, 0 }, - { "gboolean", TYPE_TAG_BOOLEAN, 0 }, -#if 0 - { "char", TYPE_TAG_INT8, 0 }, - { "gchar", TYPE_TAG_INT8, 0 }, - { "guchar", TYPE_TAG_UINT8, 0 }, -#endif - { "int8_t", TYPE_TAG_INT8, 0 }, - { "int8", TYPE_TAG_INT8, 0 }, - { "gint8", TYPE_TAG_INT8, 0 }, - { "uint8_t", TYPE_TAG_UINT8, 0 }, - { "uint8", TYPE_TAG_UINT8, 0 }, - { "guint8", TYPE_TAG_UINT8, 0 }, - { "int16_t", TYPE_TAG_INT16, 0 }, - { "int16", TYPE_TAG_INT16, 0 }, - { "gint16", TYPE_TAG_INT16, 0 }, - { "uint16_t", TYPE_TAG_UINT16, 0 }, - { "uint16", TYPE_TAG_UINT16, 0 }, - { "guint16", TYPE_TAG_UINT16, 0 }, - { "int32_t", TYPE_TAG_INT32, 0 }, - { "int32", TYPE_TAG_INT32, 0 }, - { "gint32", TYPE_TAG_INT32, 0 }, - { "uint32_t", TYPE_TAG_UINT32, 0 }, - { "uint32", TYPE_TAG_UINT32, 0 }, - { "guint32", TYPE_TAG_UINT32, 0 }, - { "int64_t", TYPE_TAG_INT64, 0 }, - { "int64", TYPE_TAG_INT64, 0 }, - { "gint64", TYPE_TAG_INT64, 0 }, - { "uint64_t", TYPE_TAG_UINT64, 0 }, - { "uint64", TYPE_TAG_UINT64, 0 }, - { "guint64", TYPE_TAG_UINT64, 0 }, - { "int", TYPE_TAG_INT, 0 }, - { "gint", TYPE_TAG_INT, 0 }, - { "uint", TYPE_TAG_UINT, 0 }, - { "guint", TYPE_TAG_UINT, 0 }, - { "long", TYPE_TAG_LONG, 0 }, - { "glong", TYPE_TAG_LONG, 0 }, - { "ulong", TYPE_TAG_ULONG, 0 }, - { "gulong", TYPE_TAG_ULONG, 0 }, - { "ssize_t", TYPE_TAG_SSIZE, 0 }, - { "gssize", TYPE_TAG_SSIZE, 0 }, - { "size_t", TYPE_TAG_SIZE, 0 }, - { "gsize", TYPE_TAG_SIZE, 0 }, - { "float", TYPE_TAG_FLOAT, 0 }, - { "gfloat", TYPE_TAG_FLOAT, 0 }, - { "double", TYPE_TAG_DOUBLE, 0 }, - { "gdouble", TYPE_TAG_DOUBLE, 0 }, - { "utf8", TYPE_TAG_UTF8, 1 }, - { "gchar*", TYPE_TAG_UTF8, 1 }, - { "filename", TYPE_TAG_FILENAME,1 }, - { "string", TYPE_TAG_STRING, 1 } + { "void", GI_TYPE_TAG_VOID, 0 }, + { "none", GI_TYPE_TAG_VOID, 0 }, + { "gpointer", GI_TYPE_TAG_VOID, 1 }, + { "bool", GI_TYPE_TAG_BOOLEAN, 0 }, + { "gboolean", GI_TYPE_TAG_BOOLEAN, 0 }, + { "char", GI_TYPE_TAG_INT8, 0 }, + { "gchar", GI_TYPE_TAG_INT8, 0 }, + { "guchar", GI_TYPE_TAG_UINT8, 0 }, + { "gunichar", GI_TYPE_TAG_UINT32, 0 }, + { "int8_t", GI_TYPE_TAG_INT8, 0 }, + { "int8", GI_TYPE_TAG_INT8, 0 }, + { "gint8", GI_TYPE_TAG_INT8, 0 }, + { "uint8_t", GI_TYPE_TAG_UINT8, 0 }, + { "uint8", GI_TYPE_TAG_UINT8, 0 }, + { "guint8", GI_TYPE_TAG_UINT8, 0 }, + { "int16_t", GI_TYPE_TAG_INT16, 0 }, + { "int16", GI_TYPE_TAG_INT16, 0 }, + { "gint16", GI_TYPE_TAG_INT16, 0 }, + { "uint16_t", GI_TYPE_TAG_UINT16, 0 }, + { "uint16", GI_TYPE_TAG_UINT16, 0 }, + { "guint16", GI_TYPE_TAG_UINT16, 0 }, + { "int32_t", GI_TYPE_TAG_INT32, 0 }, + { "int32", GI_TYPE_TAG_INT32, 0 }, + { "gint32", GI_TYPE_TAG_INT32, 0 }, + { "uint32_t", GI_TYPE_TAG_UINT32, 0 }, + { "uint32", GI_TYPE_TAG_UINT32, 0 }, + { "guint32", GI_TYPE_TAG_UINT32, 0 }, + { "int64_t", GI_TYPE_TAG_INT64, 0 }, + { "int64", GI_TYPE_TAG_INT64, 0 }, + { "gint64", GI_TYPE_TAG_INT64, 0 }, + { "uint64_t", GI_TYPE_TAG_UINT64, 0 }, + { "uint64", GI_TYPE_TAG_UINT64, 0 }, + { "guint64", GI_TYPE_TAG_UINT64, 0 }, + { "int", GI_TYPE_TAG_INT, 0 }, + { "gint", GI_TYPE_TAG_INT, 0 }, + { "uint", GI_TYPE_TAG_UINT, 0 }, + { "guint", GI_TYPE_TAG_UINT, 0 }, + { "long", GI_TYPE_TAG_LONG, 0 }, + { "glong", GI_TYPE_TAG_LONG, 0 }, + { "ulong", GI_TYPE_TAG_ULONG, 0 }, + { "gulong", GI_TYPE_TAG_ULONG, 0 }, + { "ssize_t", GI_TYPE_TAG_SSIZE, 0 }, + { "gssize", GI_TYPE_TAG_SSIZE, 0 }, + { "size_t", GI_TYPE_TAG_SIZE, 0 }, + { "gsize", GI_TYPE_TAG_SIZE, 0 }, + { "float", GI_TYPE_TAG_FLOAT, 0 }, + { "gfloat", GI_TYPE_TAG_FLOAT, 0 }, + { "double", GI_TYPE_TAG_DOUBLE, 0 }, + { "gdouble", GI_TYPE_TAG_DOUBLE, 0 }, + { "utf8", GI_TYPE_TAG_UTF8, 1 }, + { "gchar*", GI_TYPE_TAG_UTF8, 1 }, + { "filename", GI_TYPE_TAG_FILENAME,1 }, + // FIXME merge - do we still want this? + { "string", GI_TYPE_TAG_UTF8, 1 } }; gint n_basic = G_N_ELEMENTS (basic); @@ -227,14 +228,14 @@ parse_type_internal (gchar *str, gchar **rest) { if (g_str_has_prefix (*rest, "GList")) { - type->tag = TYPE_TAG_LIST; + type->tag = GI_TYPE_TAG_GLIST; type->is_glist = TRUE; type->is_pointer = TRUE; *rest += strlen ("GList"); } else { - type->tag = TYPE_TAG_SLIST; + type->tag = GI_TYPE_TAG_GSLIST; type->is_gslist = TRUE; type->is_pointer = TRUE; *rest += strlen ("GSList"); @@ -259,7 +260,7 @@ parse_type_internal (gchar *str, gchar **rest) } else if (g_str_has_prefix (*rest, "GHashTable")) { - type->tag = TYPE_TAG_HASH; + type->tag = GI_TYPE_TAG_GHASH; type->is_ghashtable = TRUE; type->is_pointer = TRUE; *rest += strlen ("GHashTable"); @@ -291,7 +292,7 @@ parse_type_internal (gchar *str, gchar **rest) } else if (g_str_has_prefix (*rest, "GError")) { - type->tag = TYPE_TAG_ERROR; + type->tag = GI_TYPE_TAG_ERROR; type->is_error = TRUE; type->is_pointer = TRUE; *rest += strlen ("GError"); @@ -312,7 +313,7 @@ parse_type_internal (gchar *str, gchar **rest) } else { - type->tag = TYPE_TAG_INTERFACE; + type->tag = GI_TYPE_TAG_INTERFACE; type->is_interface = TRUE; start = *rest; @@ -341,7 +342,7 @@ parse_type_internal (gchar *str, gchar **rest) array = (GIrNodeType *)g_ir_node_new (G_IR_NODE_TYPE); - array->tag = TYPE_TAG_ARRAY; + array->tag = GI_TYPE_TAG_ARRAY; array->is_pointer = TRUE; array->is_array = TRUE; @@ -385,6 +386,7 @@ parse_type_internal (gchar *str, gchar **rest) type = array; } + g_assert (type->tag >= 0 && type->tag <= GI_TYPE_TAG_ERROR); return type; error: @@ -625,6 +627,7 @@ start_parameter (GMarkupParseContext *context, param = (GIrNodeParam *)g_ir_node_new (G_IR_NODE_PARAM); ctx->current_typed = (GIrNode*) param; + ctx->current_typed->name = g_strdup (name); state_switch (ctx, STATE_FUNCTION_PARAMETER); diff --git a/girepository/gtypelib.c b/girepository/gtypelib.c index ca149f0..dd59844 100644 --- a/girepository/gtypelib.c +++ b/girepository/gtypelib.c @@ -388,7 +388,7 @@ validate_type_blob (GTypelib *typelib, if (simple->reserved == 0 && simple->reserved2 == 0) { - if (simple->tag >= TYPE_TAG_ARRAY) + if (simple->tag >= GI_TYPE_TAG_ARRAY) { g_set_error (error, G_TYPELIB_ERROR, @@ -397,7 +397,7 @@ validate_type_blob (GTypelib *typelib, return FALSE; } - if (simple->tag >= TYPE_TAG_UTF8 && + if (simple->tag >= GI_TYPE_TAG_UTF8 && !simple->pointer) { g_set_error (error, @@ -414,28 +414,28 @@ validate_type_blob (GTypelib *typelib, switch (iface->tag) { - case TYPE_TAG_ARRAY: + case GI_TYPE_TAG_ARRAY: if (!validate_array_type_blob (typelib, simple->offset, signature_offset, return_type, error)) return FALSE; break; - case TYPE_TAG_INTERFACE: + case GI_TYPE_TAG_INTERFACE: if (!validate_iface_type_blob (typelib, simple->offset, signature_offset, return_type, error)) return FALSE; break; - case TYPE_TAG_LIST: - case TYPE_TAG_SLIST: + case GI_TYPE_TAG_GLIST: + case GI_TYPE_TAG_GSLIST: if (!validate_param_type_blob (typelib, simple->offset, signature_offset, return_type, 1, error)) return FALSE; break; - case TYPE_TAG_HASH: + case GI_TYPE_TAG_GHASH: if (!validate_param_type_blob (typelib, simple->offset, signature_offset, return_type, 2, error)) return FALSE; break; - case TYPE_TAG_ERROR: + case GI_TYPE_TAG_ERROR: if (!validate_error_type_blob (typelib, simple->offset, signature_offset, return_type, error)) return FALSE; diff --git a/girepository/gtypelib.h b/girepository/gtypelib.h index cbaaa4f..68e0260 100644 --- a/girepository/gtypelib.h +++ b/girepository/gtypelib.h @@ -96,42 +96,6 @@ typedef struct } DirEntry; -#define TYPE_POINTER_MASK 1 << 7 -#define TYPE_TAG_MASK 63 - -typedef enum -{ - TYPE_TAG_VOID = 0, - TYPE_TAG_BOOLEAN = 1, - TYPE_TAG_INT8 = 2, - TYPE_TAG_UINT8 = 3, - TYPE_TAG_INT16 = 4, - TYPE_TAG_UINT16 = 5, - TYPE_TAG_INT32 = 6, - TYPE_TAG_UINT32 = 7, - TYPE_TAG_INT64 = 8, - TYPE_TAG_UINT64 = 9, - TYPE_TAG_INT = 10, - TYPE_TAG_UINT = 11, - TYPE_TAG_LONG = 12, - TYPE_TAG_ULONG = 13, - TYPE_TAG_SSIZE = 14, - TYPE_TAG_SIZE = 15, - TYPE_TAG_FLOAT = 16, - TYPE_TAG_DOUBLE = 17, - TYPE_TAG_UTF8 = 18, - TYPE_TAG_FILENAME = 19, - TYPE_TAG_ARRAY = 20, - TYPE_TAG_INTERFACE = 21, - TYPE_TAG_LIST = 22, - TYPE_TAG_SLIST = 23, - TYPE_TAG_HASH = 24, - TYPE_TAG_ERROR = 25, - TYPE_TAG_STRING = 26, - TYPE_TAG_SEQUENCE = 27, - TYPE_TAG_ANY = 28 -} TypeTag; - typedef union { struct -- 2.7.4