summaryrefslogtreecommitdiff
path: root/src/webidl-ast.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-08-17 17:41:18 +0200
committerVincent Sanders <vince@kyllikki.org>2015-08-17 17:41:18 +0200
commit40cd6a199d8a5f92f71c5638f4da021a779e7a5c (patch)
treee12c3c0325d361945ad83f007832f09c045c3192 /src/webidl-ast.c
parentee69169f841542c6d5d8a8c7d4b011e294d73bd8 (diff)
downloadnsgenbind-40cd6a199d8a5f92f71c5638f4da021a779e7a5c.tar.gz
nsgenbind-40cd6a199d8a5f92f71c5638f4da021a779e7a5c.tar.bz2
Add WebIDL parsing of dictionaries
This adds correct parsing of dictionaries into the AST. These entries in the AST are not yet used but do not affect generation of interfaces.
Diffstat (limited to 'src/webidl-ast.c')
-rw-r--r--src/webidl-ast.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/webidl-ast.c b/src/webidl-ast.c
index 87e3485..dc78e1f 100644
--- a/src/webidl-ast.c
+++ b/src/webidl-ast.c
@@ -96,6 +96,7 @@ webidl_node_add(struct webidl_node *node, struct webidl_node *list)
switch (node->type) {
case WEBIDL_NODE_TYPE_ROOT:
case WEBIDL_NODE_TYPE_INTERFACE:
+ case WEBIDL_NODE_TYPE_DICTIONARY:
case WEBIDL_NODE_TYPE_LIST:
case WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE:
case WEBIDL_NODE_TYPE_ATTRIBUTE:
@@ -265,7 +266,7 @@ char *webidl_node_gettext(struct webidl_node *node)
switch(node->type) {
case WEBIDL_NODE_TYPE_IDENT:
- case WEBIDL_NODE_TYPE_INTERFACE_INHERITANCE:
+ case WEBIDL_NODE_TYPE_INHERITANCE:
case WEBIDL_NODE_TYPE_INTERFACE_IMPLEMENTS:
case WEBIDL_NODE_TYPE_LITERAL_STRING:
return node->r.text;
@@ -311,6 +312,7 @@ struct webidl_node *webidl_node_getnode(struct webidl_node *node)
switch (node->type) {
case WEBIDL_NODE_TYPE_ROOT:
case WEBIDL_NODE_TYPE_INTERFACE:
+ case WEBIDL_NODE_TYPE_DICTIONARY:
case WEBIDL_NODE_TYPE_LIST:
case WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE:
case WEBIDL_NODE_TYPE_ATTRIBUTE:
@@ -338,7 +340,7 @@ static const char *webidl_node_type_to_str(enum webidl_node_type type)
case WEBIDL_NODE_TYPE_IDENT:
return "Ident";
- case WEBIDL_NODE_TYPE_INTERFACE_INHERITANCE:
+ case WEBIDL_NODE_TYPE_INHERITANCE:
return "Inherit";
case WEBIDL_NODE_TYPE_INTERFACE_IMPLEMENTS:
@@ -347,6 +349,9 @@ static const char *webidl_node_type_to_str(enum webidl_node_type type)
case WEBIDL_NODE_TYPE_INTERFACE:
return "Interface";
+ case WEBIDL_NODE_TYPE_DICTIONARY:
+ return "Dictionary";
+
case WEBIDL_NODE_TYPE_LIST:
return "List";
@@ -600,7 +605,7 @@ static int implements_copy_nodes(struct webidl_node *src_node,
while (src != NULL) {
if (src->type == WEBIDL_NODE_TYPE_LIST) {
- /** @todo technicaly this should copy WEBIDL_NODE_TYPE_INTERFACE_INHERITANCE */
+ /** @todo technicaly this should copy WEBIDL_NODE_TYPE_INHERITANCE */
dst = webidl_node_new(src->type, dst, src->r.text);
}
src = src->l;