From f9fd9816e02f05542aba93d7de00b2c982c63f50 Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Thu, 7 Aug 2008 22:15:22 +0000 Subject: Add string/any/sequence to the parser/typelib svn path=/branches/gir-compiler/; revision=324 --- girepository/gtypelib.h | 5 ++++- tools/girnode.c | 13 +++++++++---- tools/girnode.h | 40 ++++++++++++++++++++-------------------- tools/girparser.c | 3 ++- 4 files changed, 35 insertions(+), 26 deletions(-) diff --git a/girepository/gtypelib.h b/girepository/gtypelib.h index e97d7b68..0152a958 100644 --- a/girepository/gtypelib.h +++ b/girepository/gtypelib.h @@ -126,7 +126,10 @@ typedef enum TYPE_TAG_LIST = 22, TYPE_TAG_SLIST = 23, TYPE_TAG_HASH = 24, - TYPE_TAG_ERROR = 25 + TYPE_TAG_ERROR = 25, + TYPE_TAG_STRING = 26, + TYPE_TAG_SEQUENCE = 27, + TYPE_TAG_ANY = 28 } TypeTag; typedef union diff --git a/tools/girnode.c b/tools/girnode.c index 5e33a398..53da191e 100644 --- a/tools/girnode.c +++ b/tools/girnode.c @@ -1107,9 +1107,12 @@ serialize_type (GIrModule *module, "ssize", "size", "float", - "double", + "double", "utf8", - "filename" + "filename", + "string", + "sequence", + "any" }; if (node->tag < 20) @@ -1224,8 +1227,10 @@ g_ir_node_build_metadata (GIrNode *node, *offset += 4; - if (type->tag < TYPE_TAG_ARRAY) - { + if (type->tag < TYPE_TAG_ARRAY || + type->tag == TYPE_TAG_STRING || + type->tag == TYPE_TAG_ANY) + { blob->reserved = 0; blob->reserved2 = 0; blob->pointer = type->is_pointer; diff --git a/tools/girnode.h b/tools/girnode.h index 351ab641..66144d38 100644 --- a/tools/girnode.h +++ b/tools/girnode.h @@ -45,26 +45,26 @@ typedef struct _GIrNodeUnion GIrNodeUnion; typedef enum { - G_IR_NODE_INVALID, - G_IR_NODE_FUNCTION, - G_IR_NODE_CALLBACK, - G_IR_NODE_STRUCT, - G_IR_NODE_BOXED, - G_IR_NODE_ENUM, - G_IR_NODE_FLAGS, - G_IR_NODE_OBJECT, - G_IR_NODE_INTERFACE, - G_IR_NODE_CONSTANT, - G_IR_NODE_ERROR_DOMAIN, - G_IR_NODE_UNION, - G_IR_NODE_PARAM, - G_IR_NODE_TYPE, - G_IR_NODE_PROPERTY, - G_IR_NODE_SIGNAL, - G_IR_NODE_VALUE, - G_IR_NODE_VFUNC, - G_IR_NODE_FIELD, - G_IR_NODE_XREF + G_IR_NODE_INVALID = 0, + G_IR_NODE_FUNCTION = 1, + G_IR_NODE_CALLBACK = 2, + G_IR_NODE_STRUCT = 3, + G_IR_NODE_BOXED = 4, + G_IR_NODE_ENUM = 5, + G_IR_NODE_FLAGS = 6, + G_IR_NODE_OBJECT = 7, + G_IR_NODE_INTERFACE = 8, + G_IR_NODE_CONSTANT = 9, + G_IR_NODE_ERROR_DOMAIN = 10, + G_IR_NODE_UNION = 11, + G_IR_NODE_PARAM = 12, + G_IR_NODE_TYPE = 13, + G_IR_NODE_PROPERTY = 14, + G_IR_NODE_SIGNAL = 15, + G_IR_NODE_VALUE = 16, + G_IR_NODE_VFUNC = 17, + G_IR_NODE_FIELD = 18, + G_IR_NODE_XREF = 19 } GIrNodeTypeId; struct _GIrNode diff --git a/tools/girparser.c b/tools/girparser.c index c8235364..565542c4 100644 --- a/tools/girparser.c +++ b/tools/girparser.c @@ -184,7 +184,8 @@ parse_type_internal (gchar *str, gchar **rest) { "gdouble", TYPE_TAG_DOUBLE, 0 }, { "utf8", TYPE_TAG_UTF8, 1 }, { "gchar*", TYPE_TAG_UTF8, 1 }, - { "filename", TYPE_TAG_FILENAME,1 } + { "filename", TYPE_TAG_FILENAME,1 }, + { "string", TYPE_TAG_STRING, 1 } }; gint n_basic = G_N_ELEMENTS (basic); -- cgit v1.2.1