diff options
author | Vincent Sanders <vince@kyllikki.org> | 2015-08-09 11:07:11 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-08-09 11:07:11 +0100 |
commit | a9e5295d8735ff4ffe10e63f48728380edf6d7a0 (patch) | |
tree | 2ab8872a172bc11ac1a4c2b62b13170d9363bb58 /src/interface-map.h | |
parent | e78ea8b28064181d9081e7ff0143830c4ec37d7f (diff) | |
download | nsgenbind-a9e5295d8735ff4ffe10e63f48728380edf6d7a0.tar.gz nsgenbind-a9e5295d8735ff4ffe10e63f48728380edf6d7a0.tar.bz2 |
Update the interface map to contain all operation arguments
This extends the interface map (the intermediate representation) to
have information on every operations arguments including overloading
and optional arguments.
This is important to allow automated checking of passed parameters
numbers and types in future.
Diffstat (limited to 'src/interface-map.h')
-rw-r--r-- | src/interface-map.h | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/interface-map.h b/src/interface-map.h index 04d9df1..5f1926e 100644 --- a/src/interface-map.h +++ b/src/interface-map.h @@ -12,12 +12,37 @@ struct genbind_node; struct webidl_node; +/** + *map entry for each argument of an overload on an operation + */ +struct interface_map_operation_argument_entry { + const char *name; + + int optionalc; /**< Number of parameters that are optional */ + int elipsisc; /**< Number of elipsis parameters */ + + struct webidl_node *node; +}; + +/** map entry for each overload of an operation */ +struct interface_map_operation_overload_entry { + struct webidl_node *type; /**< The return type of this overload */ + + int optionalc; /**< Number of parameters that are optional */ + int elipsisc; /**< Number of elipsis parameters */ + + int argumentc; /**< the number of parameters */ + struct interface_map_operation_argument_entry *argumentv; +}; + /** map entry for operations on an interface */ struct interface_map_operation_entry { const char *name; /** operation name */ struct webidl_node *node; /**< AST operation node */ - struct genbind_node *method; /**< method from binding (if any) */ - int overloadc; /**< Number of previous overloads of this operation */ + struct genbind_node *method; /**< method from binding */ + + int overloadc; /**< Number of overloads of this operation */ + struct interface_map_operation_overload_entry *overloadv; }; /** map entry for attributes on an interface */ @@ -25,8 +50,8 @@ struct interface_map_attribute_entry { const char *name; /** attribute name */ struct webidl_node *node; /**< AST attribute node */ enum webidl_type_modifier modifier; - struct genbind_node *getter; /**< getter from binding (if any) */ - struct genbind_node *setter; /**< getter from binding (if any) */ + struct genbind_node *getter; /**< getter from binding */ + struct genbind_node *setter; /**< getter from binding */ }; /** map entry for constants on an interface */ |