summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Dahlin <johan@src.gnome.org>2008-08-07 22:15:22 +0000
committerJohan Dahlin <johan@src.gnome.org>2008-08-07 22:15:22 +0000
commitf9fd9816e02f05542aba93d7de00b2c982c63f50 (patch)
treebbadf87dc7440c65f32e86a1a7a471bf508916c3
parentb2d590a941da696ae2389a5dac49bc51feeed947 (diff)
downloadgobject-introspection-gir-compiler.tar.gz
Add string/any/sequence to the parser/typelibgir-compiler
svn path=/branches/gir-compiler/; revision=324
-rw-r--r--girepository/gtypelib.h5
-rw-r--r--tools/girnode.c13
-rw-r--r--tools/girnode.h40
-rw-r--r--tools/girparser.c3
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);