summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent Sanders <vincent.sanders@collabora.co.uk>2012-11-20 13:44:27 +0000
committerVincent Sanders <vincent.sanders@collabora.co.uk>2012-11-20 13:44:27 +0000
commite510204a381a7253d2cf69deeed01b043a4b80ad (patch)
tree7d956d8d7fe867511305a8c1d4d92c5862d20fb4 /src
parenta044206384cb02aaaaab65f813878ddcd44b1dd1 (diff)
downloadnsgenbind-e510204a381a7253d2cf69deeed01b043a4b80ad.tar.gz
nsgenbind-e510204a381a7253d2cf69deeed01b043a4b80ad.tar.bz2
add unshared option
Diffstat (limited to 'src')
-rw-r--r--src/jsapi-libdom.c2
-rw-r--r--src/nsgenbind-ast.c8
-rw-r--r--src/nsgenbind-ast.h6
-rw-r--r--src/nsgenbind-lexer.l2
-rw-r--r--src/nsgenbind-parser.y14
5 files changed, 26 insertions, 6 deletions
diff --git a/src/jsapi-libdom.c b/src/jsapi-libdom.c
index df36be8..fb8080f 100644
--- a/src/jsapi-libdom.c
+++ b/src/jsapi-libdom.c
@@ -536,7 +536,7 @@ output_private_declaration(struct binding *binding)
type_node = genbind_node_find(genbind_node_getnode(binding_node),
NULL,
genbind_cmp_node_type,
- (void *)GENBIND_NODE_TYPE_BINDING_TYPE);
+ (void *)GENBIND_NODE_TYPE_TYPE);
if (type_node == NULL) {
return -1;
diff --git a/src/nsgenbind-ast.c b/src/nsgenbind-ast.c
index 52febaa..09ce8ce 100644
--- a/src/nsgenbind-ast.c
+++ b/src/nsgenbind-ast.c
@@ -173,7 +173,7 @@ char *genbind_node_gettext(struct genbind_node *node)
case GENBIND_NODE_TYPE_STRING:
case GENBIND_NODE_TYPE_PREAMBLE:
case GENBIND_NODE_TYPE_IDENT:
- case GENBIND_NODE_TYPE_BINDING_TYPE:
+ case GENBIND_NODE_TYPE_TYPE:
case GENBIND_NODE_TYPE_BINDING_INTERFACE:
case GENBIND_NODE_TYPE_CBLOCK:
return node->r.text;
@@ -190,6 +190,7 @@ struct genbind_node *genbind_node_getnode(struct genbind_node *node)
case GENBIND_NODE_TYPE_BINDING:
case GENBIND_NODE_TYPE_BINDING_PRIVATE:
case GENBIND_NODE_TYPE_BINDING_INTERNAL:
+ case GENBIND_NODE_TYPE_BINDING_UNSHARED:
case GENBIND_NODE_TYPE_OPERATION:
case GENBIND_NODE_TYPE_API:
case GENBIND_NODE_TYPE_GETTER:
@@ -225,7 +226,7 @@ static const char *genbind_node_type_to_str(enum genbind_node_type type)
case GENBIND_NODE_TYPE_BINDING:
return "Binding";
- case GENBIND_NODE_TYPE_BINDING_TYPE:
+ case GENBIND_NODE_TYPE_TYPE:
return "Type";
case GENBIND_NODE_TYPE_BINDING_PRIVATE:
@@ -237,6 +238,9 @@ static const char *genbind_node_type_to_str(enum genbind_node_type type)
case GENBIND_NODE_TYPE_BINDING_INTERFACE:
return "Interface";
+ case GENBIND_NODE_TYPE_BINDING_UNSHARED:
+ return "Unshared";
+
case GENBIND_NODE_TYPE_OPERATION:
return "Operation";
diff --git a/src/nsgenbind-ast.h b/src/nsgenbind-ast.h
index 54a49d2..5ae21b4 100644
--- a/src/nsgenbind-ast.h
+++ b/src/nsgenbind-ast.h
@@ -11,17 +11,19 @@
enum genbind_node_type {
GENBIND_NODE_TYPE_ROOT = 0,
- GENBIND_NODE_TYPE_IDENT,
+ GENBIND_NODE_TYPE_IDENT, /* generic identifier string */
+ GENBIND_NODE_TYPE_TYPE, /* generic type string */
+
GENBIND_NODE_TYPE_CBLOCK,
GENBIND_NODE_TYPE_WEBIDLFILE,
GENBIND_NODE_TYPE_HDRCOMMENT,
GENBIND_NODE_TYPE_STRING,
GENBIND_NODE_TYPE_PREAMBLE,
GENBIND_NODE_TYPE_BINDING,
- GENBIND_NODE_TYPE_BINDING_TYPE,
GENBIND_NODE_TYPE_BINDING_PRIVATE,
GENBIND_NODE_TYPE_BINDING_INTERNAL,
GENBIND_NODE_TYPE_BINDING_INTERFACE,
+ GENBIND_NODE_TYPE_BINDING_UNSHARED,
GENBIND_NODE_TYPE_API,
GENBIND_NODE_TYPE_OPERATION,
GENBIND_NODE_TYPE_GETTER,
diff --git a/src/nsgenbind-lexer.l b/src/nsgenbind-lexer.l
index 61aee7e..aea68ee 100644
--- a/src/nsgenbind-lexer.l
+++ b/src/nsgenbind-lexer.l
@@ -96,6 +96,8 @@ private return TOK_PRIVATE;
internal return TOK_INTERNAL;
+unshared return TOK_UNSHARED;
+
operation return TOK_OPERATION;
api return TOK_API;
diff --git a/src/nsgenbind-parser.y b/src/nsgenbind-parser.y
index 1ffab7a..e64d255 100644
--- a/src/nsgenbind-parser.y
+++ b/src/nsgenbind-parser.y
@@ -51,6 +51,7 @@ char *errtxt;
%token TOK_TYPE
%token TOK_PRIVATE
%token TOK_INTERNAL
+%token TOK_UNSHARED
%token <text> TOK_IDENTIFIER
%token <text> TOK_STRING_LITERAL
@@ -71,6 +72,7 @@ char *errtxt;
%type <node> Private
%type <node> Internal
%type <node> Interface
+%type <node> Unshared
%type <node> Operation
%type <node> Api
%type <node> Getter
@@ -252,13 +254,15 @@ BindingArg
Internal
|
Interface
+ |
+ Unshared
;
Type
:
TOK_TYPE TOK_IDENTIFIER ';'
{
- $$ = genbind_new_node(GENBIND_NODE_TYPE_BINDING_TYPE, NULL, $2);
+ $$ = genbind_new_node(GENBIND_NODE_TYPE_TYPE, NULL, $2);
}
;
@@ -290,4 +294,12 @@ Interface
}
;
+Unshared
+ :
+ TOK_UNSHARED TOK_TYPE TOK_IDENTIFIER ';'
+ {
+ $$ = genbind_new_node(GENBIND_NODE_TYPE_BINDING_UNSHARED, NULL,
+ genbind_new_node(GENBIND_NODE_TYPE_TYPE, NULL, $3));
+ }
+ ;
%%