Module: wine Branch: master Commit: 979bdf28b60dbb10782dc8a34e1f308112a8a81a URL: http://source.winehq.org/git/wine.git/?a=commit;h=979bdf28b60dbb10782dc8a34e...
Author: Rob Shearman robertshearman@gmail.com Date: Tue Mar 23 13:33:36 2010 +0000
widl: Remove func_t type.
It was just a simple indirection to get to a var_t, so just replace all uses of it with the latter.
---
tools/widl/parser.y | 41 ++++++++--------------------------------- tools/widl/typetree.c | 2 +- tools/widl/typetree.h | 2 +- tools/widl/widltypes.h | 12 +----------- tools/widl/write_msft.c | 8 ++++---- 5 files changed, 15 insertions(+), 50 deletions(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 5c021ae..d0985e9 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -108,8 +108,6 @@ static ifref_t *make_ifref(type_t *iface); static var_list_t *append_var_list(var_list_t *list, var_list_t *vars); static declarator_list_t *append_declarator(declarator_list_t *list, declarator_t *p); static declarator_t *make_declarator(var_t *var); -static func_list_t *append_func(func_list_t *list, func_t *func); -static func_t *make_func(var_t *def); static type_t *make_safearray(type_t *type); static typelib_t *make_library(const char *name, const attr_list_t *attrs); static type_t *append_ptrchain_type(type_t *ptrchain, type_t *type); @@ -165,8 +163,6 @@ static statement_list_t *append_statement(statement_list_t *list, statement_t *s var_list_t *var_list; declarator_t *declarator; declarator_list_t *declarator_list; - func_t *func; - func_list_t *func_list; statement_t *statement; statement_list_t *stmt_list; ifref_t *ifref; @@ -293,14 +289,14 @@ static statement_list_t *append_statement(statement_list_t *list, statement_t *s %type <ifref> coclass_int %type <ifref_list> coclass_ints %type <var> arg ne_union_field union_field s_field case enum declaration -%type <var_list> m_args arg_list args +%type <var> funcdef +%type <var_list> m_args arg_list args dispint_meths %type <var_list> fields ne_union_fields cases enums enum_list dispint_props field %type <var> m_ident ident %type <declarator> declarator direct_declarator init_declarator struct_declarator %type <declarator> m_any_declarator any_declarator any_declarator_no_direct any_direct_declarator %type <declarator> m_abstract_declarator abstract_declarator abstract_declarator_no_direct abstract_direct_declarator %type <declarator_list> declarator_list struct_declarator_list -%type <func> funcdef %type <type> coclass coclasshdr coclassdef %type <num> pointer_type version %type <str> libraryhdr callconv cppquote importlib import t_ident @@ -308,7 +304,7 @@ static statement_list_t *append_statement(statement_list_t *list, statement_t *s %type <import> import_start %type <typelib> library_start librarydef %type <statement> statement typedef -%type <stmt_list> gbl_statements imp_statements int_statements dispint_meths +%type <stmt_list> gbl_statements imp_statements int_statements
%left ',' %right '?' ':' @@ -720,12 +716,10 @@ s_field: m_attributes decl_spec declarator { $$ = declare_var(check_field_attrs } ;
-funcdef: - m_attributes decl_spec declarator { var_t *v; - v = declare_var(check_function_attrs($3->var->name, $1), - $2, $3, FALSE); - free($3); - $$ = make_func(v); +funcdef: declaration { $$ = $1; + if (type_get_type($$->type) != TYPE_FUNCTION) + error_loc("only methods may be declared inside the methods section of a dispinterface\n"); + check_function_attrs($$->name, $$->attrs); } ;
@@ -826,7 +820,7 @@ dispint_props: tPROPERTIES ':' { $$ = NULL; } ;
dispint_meths: tMETHODS ':' { $$ = NULL; } - | dispint_meths funcdef ';' { $$ = append_func( $1, $2 ); } + | dispint_meths funcdef ';' { $$ = append_var( $1, $2 ); } ;
dispinterfacedef: dispinterfacehdr '{' @@ -1693,25 +1687,6 @@ static declarator_t *make_declarator(var_t *var) return d; }
-static func_list_t *append_func(func_list_t *list, func_t *func) -{ - if (!func) return list; - if (!list) - { - list = xmalloc( sizeof(*list) ); - list_init( list ); - } - list_add_tail( list, &func->entry ); - return list; -} - -static func_t *make_func(var_t *def) -{ - func_t *f = xmalloc(sizeof(func_t)); - f->def = def; - return f; -} - static type_t *make_safearray(type_t *type) { return type_new_array(NULL, type_new_alias(type, "SAFEARRAY"), TRUE, 0, diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c index a60e757..a9e71be 100644 --- a/tools/widl/typetree.c +++ b/tools/widl/typetree.c @@ -386,7 +386,7 @@ void type_interface_define(type_t *iface, type_t *inherit, statement_list_t *stm compute_method_indexes(iface); }
-void type_dispinterface_define(type_t *iface, var_list_t *props, func_list_t *methods) +void type_dispinterface_define(type_t *iface, var_list_t *props, var_list_t *methods) { iface->details.iface = xmalloc(sizeof(*iface->details.iface)); iface->details.iface->disp_props = props; diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h index 591406b..8b19739 100644 --- a/tools/widl/typetree.h +++ b/tools/widl/typetree.h @@ -41,7 +41,7 @@ type_t *type_new_nonencapsulated_union(const char *name, int defined, var_list_t type_t *type_new_encapsulated_union(char *name, var_t *switch_field, var_t *union_field, var_list_t *cases); type_t *type_new_bitfield(type_t *field_type, const expr_t *bits); void type_interface_define(type_t *iface, type_t *inherit, statement_list_t *stmts); -void type_dispinterface_define(type_t *iface, var_list_t *props, func_list_t *methods); +void type_dispinterface_define(type_t *iface, var_list_t *props, var_list_t *methods); void type_dispinterface_define_from_iface(type_t *dispiface, type_t *iface); void type_module_define(type_t *module, statement_list_t *stmts); type_t *type_coclass_define(type_t *coclass, ifref_list_t *ifaces); diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h index 18f601c..d40fe1e 100644 --- a/tools/widl/widltypes.h +++ b/tools/widl/widltypes.h @@ -41,7 +41,6 @@ typedef struct _expr_t expr_t; typedef struct _type_t type_t; typedef struct _var_t var_t; typedef struct _declarator_t declarator_t; -typedef struct _func_t func_t; typedef struct _ifref_t ifref_t; typedef struct _typelib_entry_t typelib_entry_t; typedef struct _importlib_t importlib_t; @@ -54,7 +53,6 @@ typedef struct _statement_t statement_t;
typedef struct list attr_list_t; typedef struct list str_list_t; -typedef struct list func_list_t; typedef struct list expr_list_t; typedef struct list var_list_t; typedef struct list declarator_list_t; @@ -301,7 +299,7 @@ struct func_details struct iface_details { statement_list_t *stmts; - func_list_t *disp_methods; + var_list_t *disp_methods; var_list_t *disp_props; struct _type_t *inherit; }; @@ -309,7 +307,6 @@ struct iface_details struct module_details { statement_list_t *stmts; - func_list_t *funcs; };
struct array_details @@ -418,13 +415,6 @@ struct _declarator_t { struct list entry; };
-struct _func_t { - var_t *def; - - /* parser-internal */ - struct list entry; -}; - struct _ifref_t { type_t *iface; attr_list_t *attrs; diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index 5bbc95e..15761a0 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -1950,7 +1950,7 @@ static void add_dispatch(msft_typelib_t *typelib) static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinterface) { int idx = 0; - const func_t *func; + var_t *func; var_t *var; msft_typeinfo_t *msft_typeinfo;
@@ -1970,7 +1970,7 @@ static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinte
/* count the no of methods, as the variable indices come after the funcs */ if (dispinterface->details.iface->disp_methods) - LIST_FOR_EACH_ENTRY( func, dispinterface->details.iface->disp_methods, const func_t, entry ) + LIST_FOR_EACH_ENTRY( func, dispinterface->details.iface->disp_methods, var_t, entry ) idx++;
if (type_dispiface_get_props(dispinterface)) @@ -1980,8 +1980,8 @@ static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinte if (type_dispiface_get_methods(dispinterface)) { idx = 0; - LIST_FOR_EACH_ENTRY( func, type_dispiface_get_methods(dispinterface), const func_t, entry ) - if(add_func_desc(msft_typeinfo, func->def, idx) == S_OK) + LIST_FOR_EACH_ENTRY( func, type_dispiface_get_methods(dispinterface), var_t, entry ) + if(add_func_desc(msft_typeinfo, func, idx) == S_OK) idx++; } }