diff options
author | Vincent Sanders <vince@kyllikki.org> | 2015-08-30 09:14:38 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-08-30 09:14:38 +0100 |
commit | 83956295f66576becbf5de8cef915cd0d54f409b (patch) | |
tree | b8040d623ed6d0998ddb23224f364cc1b4be2460 /src/webidl-ast.c | |
parent | d6f41574a18866ebfbb8b61f9afcd0a0de2d40cf (diff) | |
download | nsgenbind-83956295f66576becbf5de8cef915cd0d54f409b.tar.gz nsgenbind-83956295f66576becbf5de8cef915cd0d54f409b.tar.bz2 |
Change dictionary generation to produce C accessors.
This generates routines which correctly handle reading a member from a
dictionary and returning it as the correct c type. Currently the types
"any", "user" and "sequence" remain unhandled.
Diffstat (limited to 'src/webidl-ast.c')
-rw-r--r-- | src/webidl-ast.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/webidl-ast.c b/src/webidl-ast.c index dc78e1f..e9dda2d 100644 --- a/src/webidl-ast.c +++ b/src/webidl-ast.c @@ -34,6 +34,7 @@ struct webidl_node { void *value; struct webidl_node *node; /* node has a list of nodes */ char *text; /* node data is text */ + float *flt; int number; /* node data is an integer */ } r; }; @@ -299,6 +300,22 @@ webidl_node_getint(struct webidl_node *node) } /* exported interface defined in webidl-ast.h */ +float * +webidl_node_getfloat(struct webidl_node *node) +{ + if (node != NULL) { + switch(node->type) { + case WEBIDL_NODE_TYPE_LITERAL_FLOAT: + return node->r.flt; + + default: + break; + } + } + return NULL; +} + +/* exported interface defined in webidl-ast.h */ enum webidl_node_type webidl_node_gettype(struct webidl_node *node) { return node->type; @@ -398,7 +415,7 @@ static const char *webidl_node_type_to_str(enum webidl_node_type type) return "Literal (bool)"; case WEBIDL_NODE_TYPE_LITERAL_FLOAT: - return "Literal (string)"; + return "Literal (float)"; case WEBIDL_NODE_TYPE_LITERAL_STRING: return "Literal (string)"; |