Signed-off-by: Zebediah Figura z.figura12@gmail.com --- tools/widl/header.c | 6 +++--- tools/widl/parser.y | 2 +- tools/widl/proxy.c | 12 ++++++------ tools/widl/typegen.c | 6 +++--- tools/widl/typetree.h | 7 +++++++ tools/widl/widl.c | 6 +++--- 6 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/tools/widl/header.c b/tools/widl/header.c index a862a72b52..f4bf13aca8 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -1651,8 +1651,8 @@ static void write_forward_decls(FILE *header, const statement_list_t *stmts) if (is_object(iface) || is_attr(iface->attrs, ATTR_DISPINTERFACE)) { write_forward(header, iface); - if (iface->details.iface->async_iface) - write_forward(header, iface->details.iface->async_iface); + if (type_iface_get_async_iface(iface)) + write_forward(header, type_iface_get_async_iface(iface)); } } else if (type_get_type(stmt->u.type) == TYPE_COCLASS) @@ -1688,7 +1688,7 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons if (type_get_type(stmt->u.type) == TYPE_INTERFACE) { type_t *iface = stmt->u.type; - type_t *async_iface = iface->details.iface->async_iface; + type_t *async_iface = type_iface_get_async_iface(iface); if (is_object(iface)) is_object_interface++; if (is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE) || is_object(stmt->u.type)) { diff --git a/tools/widl/parser.y b/tools/widl/parser.y index daff825771..e39d801464 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2809,7 +2809,7 @@ static void check_async_uuid(type_t *iface)
inherit = iface->details.iface->inherit; if (inherit && strcmp(inherit->name, "IUnknown")) - inherit = inherit->details.iface->async_iface; + inherit = type_iface_get_async_iface(inherit); if (!inherit) error_loc("async_uuid applied to an interface with incompatible parent\n");
diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c index 466c46219f..22c045d788 100644 --- a/tools/widl/proxy.c +++ b/tools/widl/proxy.c @@ -739,7 +739,7 @@ static void write_proxy(type_t *iface, unsigned int *proc_offset) print_proxy( "{\n"); indent++; print_proxy( "%s_%s\n", - iface->details.iface->async_iface == iface ? "CStdAsyncStubBuffer" : "CStdStubBuffer", + type_iface_get_async_iface(iface) == iface ? "CStdAsyncStubBuffer" : "CStdStubBuffer", need_delegation_indirect(iface) ? "DELEGATING_METHODS" : "METHODS"); indent--; print_proxy( "}\n"); @@ -840,8 +840,8 @@ static void write_proxy_stmts(const statement_list_t *stmts, unsigned int *proc_ if (need_proxy(iface)) { write_proxy(iface, proc_offset); - if (iface->details.iface->async_iface) - write_proxy(iface->details.iface->async_iface, proc_offset); + if (type_iface_get_async_iface(iface)) + write_proxy(type_iface_get_async_iface(iface), proc_offset); } } } @@ -870,9 +870,9 @@ static void build_iface_list( const statement_list_t *stmts, type_t **ifaces[], { *ifaces = xrealloc( *ifaces, (*count + 1) * sizeof(**ifaces) ); (*ifaces)[(*count)++] = iface; - if (iface->details.iface->async_iface) + if (type_iface_get_async_iface(iface)) { - iface = iface->details.iface->async_iface; + iface = type_iface_get_async_iface(iface); *ifaces = xrealloc( *ifaces, (*count + 1) * sizeof(**ifaces) ); (*ifaces)[(*count)++] = iface; } @@ -1012,7 +1012,7 @@ static void write_proxy_routines(const statement_list_t *stmts) table_version = get_stub_mode() == MODE_Oif ? 2 : 1; for (i = 0; i < count; i++) { - if (interfaces[i]->details.iface->async_iface != interfaces[i]) continue; + if (type_iface_get_async_iface(interfaces[i]) != interfaces[i]) continue; if (table_version != 6) { fprintf(proxy, "static const IID *_AsyncInterfaceTable[] =\n"); diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 86611aed68..47d12f59d1 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -1394,7 +1394,7 @@ static void write_proc_func_header( FILE *file, int indent, const type_t *iface,
if (is_attr( func->attrs, ATTR_NOTIFY )) ext_flags |= 0x08; /* HasNotify */ if (is_attr( func->attrs, ATTR_NOTIFYFLAG )) ext_flags |= 0x10; /* HasNotify2 */ - if (iface == iface->details.iface->async_iface) oi2_flags |= 0x20; + if (iface == type_iface_get_async_iface(iface)) oi2_flags |= 0x20;
size = get_function_buffer_size( func, PASS_IN ); print_file( file, indent, "NdrFcShort(0x%x),\t/* client buffer = %u */\n", size, size ); @@ -1493,8 +1493,8 @@ static void for_each_iface(const statement_list_t *stmts, iface = stmt->u.type; if (!pred(iface)) continue; proc(iface, file, indent, offset); - if (iface->details.iface->async_iface) - proc(iface->details.iface->async_iface, file, indent, offset); + if (type_iface_get_async_iface(iface)) + proc(type_iface_get_async_iface(iface), file, indent, offset); } }
diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h index 22232fc0a7..4eb0a0a57f 100644 --- a/tools/widl/typetree.h +++ b/tools/widl/typetree.h @@ -162,6 +162,13 @@ static inline type_t *type_iface_get_inherit(const type_t *type) return type->details.iface->inherit; }
+static inline type_t *type_iface_get_async_iface(const type_t *type) +{ + type = type_get_real_type(type); + assert(type_get_type(type) == TYPE_INTERFACE); + return type->details.iface->async_iface; +} + static inline var_list_t *type_dispiface_get_props(const type_t *type) { type = type_get_real_type(type); diff --git a/tools/widl/widl.c b/tools/widl/widl.c index 0bcf67ba73..1620dfdb3a 100644 --- a/tools/widl/widl.c +++ b/tools/widl/widl.c @@ -494,10 +494,10 @@ static void write_id_data_stmts(const statement_list_t *stmts) uuid = get_attrp(type->attrs, ATTR_UUID); write_id_guid(idfile, "IID", is_attr(type->attrs, ATTR_DISPINTERFACE) ? "DIID" : "IID", type->name, uuid); - if (type->details.iface->async_iface) + if (type_iface_get_async_iface(type)) { - uuid = get_attrp(type->details.iface->async_iface->attrs, ATTR_UUID); - write_id_guid(idfile, "IID", "IID", type->details.iface->async_iface->name, uuid); + uuid = get_attrp(type_iface_get_async_iface(type)->attrs, ATTR_UUID); + write_id_guid(idfile, "IID", "IID", type_iface_get_async_iface(type)->name, uuid); } } else if (type_get_type(type) == TYPE_COCLASS)
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- tools/widl/parser.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index e39d801464..1504fb9638 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2807,7 +2807,7 @@ static void check_async_uuid(type_t *iface)
if (!is_attr(iface->attrs, ATTR_ASYNCUUID)) return;
- inherit = iface->details.iface->inherit; + inherit = type_iface_get_inherit(iface); if (inherit && strcmp(inherit->name, "IUnknown")) inherit = type_iface_get_async_iface(inherit); if (!inherit)
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- tools/widl/typegen.c | 17 +++++++++-------- tools/widl/typetree.h | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 47d12f59d1..e21aa5703c 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -1011,8 +1011,9 @@ static unsigned char get_parameter_fc( const var_t *var, int is_return, unsigned break; case TGT_ARRAY: *flags |= MustFree; - if (type_array_is_decl_as_ptr(var->declspec.type) && var->declspec.type->details.array.ptr_tfsoff && - get_pointer_fc( var->declspec.type, var->attrs, !is_return ) == FC_RP) + if (type_array_is_decl_as_ptr(var->declspec.type) + && type_array_get_ptr_tfsoff(var->declspec.type) + && get_pointer_fc(var->declspec.type, var->attrs, !is_return) == FC_RP) { *typestring_offset = var->declspec.type->typestring_offset; *flags |= IsSimpleRef; @@ -1228,9 +1229,9 @@ static unsigned int write_old_procformatstring_type(FILE *file, int indent, cons { unsigned short offset = var->typestring_offset;
- if (!is_interpreted && is_array(var->declspec.type) && - type_array_is_decl_as_ptr(var->declspec.type) && - var->declspec.type->details.array.ptr_tfsoff) + if (!is_interpreted && is_array(var->declspec.type) + && type_array_is_decl_as_ptr(var->declspec.type) + && type_array_get_ptr_tfsoff(var->declspec.type)) offset = var->declspec.type->typestring_offset;
if (is_return) @@ -3621,7 +3622,7 @@ static unsigned int write_type_tfs(FILE *file, const attr_list_t *attrs, if (ptr_type != FC_RP) update_tfsoff( type, off, file ); *typeformat_offset += 4; } - type->details.array.ptr_tfsoff = off; + type_array_set_ptr_tfsoff(type, off); } return off; } @@ -4350,10 +4351,10 @@ static void write_remoting_arg(FILE *file, int indent, const var_t *func, const ((tc == FC_SMVARRAY || tc == FC_LGVARRAY) && in_attr) || (tc == FC_CARRAY && !in_attr)) { - if (type_array_is_decl_as_ptr(type) && type->details.array.ptr_tfsoff) + if (type_array_is_decl_as_ptr(type) && type_array_get_ptr_tfsoff(type)) { print_phase_function(file, indent, "Pointer", local_var_prefix, phase, var, - type->details.array.ptr_tfsoff); + type_array_get_ptr_tfsoff(type)); break; } print_phase_function(file, indent, array_type, local_var_prefix, phase, var, start_offset); diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h index 4eb0a0a57f..07179a06b4 100644 --- a/tools/widl/typetree.h +++ b/tools/widl/typetree.h @@ -257,6 +257,20 @@ static inline expr_t *type_array_get_variance(const type_t *type) return type->details.array.length_is; }
+static inline unsigned short type_array_get_ptr_tfsoff(const type_t *type) +{ + type = type_get_real_type(type); + assert(type_get_type(type) == TYPE_ARRAY); + return type->details.array.ptr_tfsoff; +} + +static inline void type_array_set_ptr_tfsoff(type_t *type, unsigned short ptr_tfsoff) +{ + type = type_get_real_type(type); + assert(type_get_type(type) == TYPE_ARRAY); + type->details.array.ptr_tfsoff = ptr_tfsoff; +} + static inline const decl_spec_t *type_array_get_element(const type_t *type) { type = type_get_real_type(type);
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- tools/widl/typetree.c | 4 +--- tools/widl/typetree.h | 4 ++-- tools/widl/widltypes.h | 3 --- 3 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c index e727d8c697..d823a46edc 100644 --- a/tools/widl/typetree.c +++ b/tools/widl/typetree.c @@ -59,7 +59,6 @@ type_t *make_type(enum type_type type) t->user_types_registered = FALSE; t->tfswrite = FALSE; t->checked = FALSE; - t->is_alias = FALSE; t->typelib_idx = -1; init_loc_info(&t->loc_info); return t; @@ -188,12 +187,11 @@ type_t *type_new_pointer(unsigned char pointer_default, type_t *ref, attr_list_t
type_t *type_new_alias(type_t *t, const char *name) { - type_t *a = duptype(t, 0); + type_t *a = make_type(TYPE_ALIAS);
a->name = xstrdup(name); a->attrs = NULL; a->orig = t; - a->is_alias = TRUE; /* for pointer types */ a->details = t->details; init_loc_info(&a->loc_info); diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h index 07179a06b4..db8c1fcade 100644 --- a/tools/widl/typetree.h +++ b/tools/widl/typetree.h @@ -59,7 +59,7 @@ type_t *duptype(type_t *t, int dupname); /* un-alias the type until finding the non-alias type */ static inline type_t *type_get_real_type(const type_t *type) { - if (type->is_alias) + if (type->type_type == TYPE_ALIAS) return type_get_real_type(type->orig); else return (type_t *)type; @@ -299,7 +299,7 @@ static inline unsigned char type_array_get_ptr_default_fc(const type_t *type)
static inline int type_is_alias(const type_t *type) { - return type->is_alias; + return type->type_type == TYPE_ALIAS; }
static inline type_t *type_alias_get_aliasee(const type_t *type) diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h index 5e0f34db8d..29ff266388 100644 --- a/tools/widl/widltypes.h +++ b/tools/widl/widltypes.h @@ -451,7 +451,6 @@ struct _type_t { unsigned int user_types_registered : 1; unsigned int tfswrite : 1; /* if the type needs to be written to the TFS */ unsigned int checked : 1; - unsigned int is_alias : 1; /* is the type an alias? */ };
struct _var_t { @@ -593,8 +592,6 @@ char *format_namespace(struct namespace *namespace, const char *prefix, const ch
static inline enum type_type type_get_type_detect_alias(const type_t *type) { - if (type->is_alias) - return TYPE_ALIAS; return type->type_type; }
From: Richard Pospesel richard@torproject.org
Signed-off-by: Richard Pospesel richard@torproject.org Signed-off-by: Zebediah Figura z.figura12@gmail.com --- tools/widl/header.c | 14 +++++++------- tools/widl/header.h | 2 +- tools/widl/parser.y | 2 +- tools/widl/typegen.c | 8 ++++---- tools/widl/typetree.c | 5 +---- tools/widl/typetree.h | 6 +++--- tools/widl/widltypes.h | 7 ++++++- tools/widl/write_msft.c | 12 ++++++------ 8 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/tools/widl/header.c b/tools/widl/header.c index f4bf13aca8..51c2be7eef 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -75,7 +75,7 @@ int is_ptrchain_attr(const var_t *var, enum attr_type t) if (is_attr(type->attrs, t)) return 1; else if (type_is_alias(type)) - type = type_alias_get_aliasee(type); + type = type_alias_get_aliasee_type(type); else if (is_ptr(type)) type = type_pointer_get_ref_type(type); else return 0; @@ -91,7 +91,7 @@ int is_aliaschain_attr(const type_t *type, enum attr_type attr) if (is_attr(t->attrs, attr)) return 1; else if (type_is_alias(t)) - t = type_alias_get_aliasee(t); + t = type_alias_get_aliasee_type(t); else return 0; } } @@ -602,7 +602,7 @@ unsigned int get_context_handle_offset( const type_t *type )
while (!is_attr( type->attrs, ATTR_CONTEXTHANDLE )) { - if (type_is_alias( type )) type = type_alias_get_aliasee( type ); + if (type_is_alias( type )) type = type_alias_get_aliasee_type( type ); else if (is_ptr( type )) type = type_pointer_get_ref_type( type ); else error( "internal error: %s is not a context handle\n", type->name ); } @@ -622,7 +622,7 @@ unsigned int get_generic_handle_offset( const type_t *type )
while (!is_attr( type->attrs, ATTR_HANDLE )) { - if (type_is_alias( type )) type = type_alias_get_aliasee( type ); + if (type_is_alias( type )) type = type_alias_get_aliasee_type( type ); else if (is_ptr( type )) type = type_pointer_get_ref_type( type ); else error( "internal error: %s is not a generic handle\n", type->name ); } @@ -701,7 +701,7 @@ void check_for_additional_prototype_types(type_t *type) }
if (type_is_alias(type)) - type = type_alias_get_aliasee(type); + type = type_alias_get_aliasee_type(type); else if (is_ptr(type)) type = type_pointer_get_ref_type(type); else if (is_array(type)) @@ -789,7 +789,7 @@ static void write_generic_handle_routines(FILE *header) static void write_typedef(FILE *header, type_t *type) { fprintf(header, "typedef "); - write_type_def_or_decl(header, type_alias_get_aliasee(type), FALSE, type->name); + write_type_def_or_decl(header, type_alias_get_aliasee_type(type), FALSE, type->name); fprintf(header, ";\n"); }
@@ -852,7 +852,7 @@ const type_t* get_explicit_generic_handle_type(const var_t* var) const type_t *t; for (t = var->declspec.type; is_ptr(t) || type_is_alias(t); - t = type_is_alias(t) ? type_alias_get_aliasee(t) : type_pointer_get_ref_type(t)) + t = type_is_alias(t) ? type_alias_get_aliasee_type(t) : type_pointer_get_ref_type(t)) if ((type_get_type_detect_alias(t) != TYPE_BASIC || type_basic_get_type(t) != TYPE_BASIC_HANDLE) && is_attr(t->attrs, ATTR_HANDLE)) return t; diff --git a/tools/widl/header.h b/tools/widl/header.h index eb98125b25..94b90a391f 100644 --- a/tools/widl/header.h +++ b/tools/widl/header.h @@ -102,7 +102,7 @@ static inline int is_context_handle(const type_t *type) const type_t *t; for (t = type; is_ptr(t) || type_is_alias(t); - t = type_is_alias(t) ? type_alias_get_aliasee(t) : type_pointer_get_ref_type(t)) + t = type_is_alias(t) ? type_alias_get_aliasee_type(t) : type_pointer_get_ref_type(t)) if (is_attr(t->attrs, ATTR_CONTEXTHANDLE)) return 1; return 0; diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 1504fb9638..df3d78f567 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -1548,7 +1548,7 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const decl { ptr_attr = get_attrv(ptr->attrs, ATTR_POINTERTYPE); if (!ptr_attr && type_is_alias(ptr)) - ptr = type_alias_get_aliasee(ptr); + ptr = type_alias_get_aliasee_type(ptr); else break; } diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index e21aa5703c..e266764144 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -197,7 +197,7 @@ static void *get_aliaschain_attrp(const type_t *type, enum attr_type attr) if (is_attr(t->attrs, attr)) return get_attrp(t->attrs, attr); else if (type_is_alias(t)) - t = type_alias_get_aliasee(t); + t = type_alias_get_aliasee_type(t); else return NULL; } } @@ -267,7 +267,7 @@ unsigned char get_pointer_fc(const type_t *type, const attr_list_t *attrs, int t if (pointer_type) return pointer_type;
- for (t = type; type_is_alias(t); t = type_alias_get_aliasee(t)) + for (t = type; type_is_alias(t); t = type_alias_get_aliasee_type(t)) { pointer_type = get_attrv(t->attrs, ATTR_POINTERTYPE); if (pointer_type) @@ -316,7 +316,7 @@ static type_t *get_user_type(const type_t *t, const char **pname) }
if (type_is_alias(t)) - t = type_alias_get_aliasee(t); + t = type_alias_get_aliasee_type(t); else return NULL; } @@ -857,7 +857,7 @@ static const char *get_context_handle_type_name(const type_t *type) const type_t *t; for (t = type; is_ptr(t) || type_is_alias(t); - t = type_is_alias(t) ? type_alias_get_aliasee(t) : type_pointer_get_ref_type(t)) + t = type_is_alias(t) ? type_alias_get_aliasee_type(t) : type_pointer_get_ref_type(t)) if (is_attr(t->attrs, ATTR_CONTEXTHANDLE)) return t->name; assert(0); diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c index d823a46edc..ae3f375450 100644 --- a/tools/widl/typetree.c +++ b/tools/widl/typetree.c @@ -49,7 +49,6 @@ type_t *make_type(enum type_type type) t->type_type = type; t->attrs = NULL; t->c_name = NULL; - t->orig = NULL; memset(&t->details, 0, sizeof(t->details)); t->typestring_offset = 0; t->ptrdesc = 0; @@ -191,9 +190,7 @@ type_t *type_new_alias(type_t *t, const char *name)
a->name = xstrdup(name); a->attrs = NULL; - a->orig = t; - /* for pointer types */ - a->details = t->details; + a->details.alias.aliasee.type = t; init_loc_info(&a->loc_info);
return a; diff --git a/tools/widl/typetree.h b/tools/widl/typetree.h index db8c1fcade..58b388c825 100644 --- a/tools/widl/typetree.h +++ b/tools/widl/typetree.h @@ -60,7 +60,7 @@ type_t *duptype(type_t *t, int dupname); static inline type_t *type_get_real_type(const type_t *type) { if (type->type_type == TYPE_ALIAS) - return type_get_real_type(type->orig); + return type_get_real_type(type->details.alias.aliasee.type); else return (type_t *)type; } @@ -302,10 +302,10 @@ static inline int type_is_alias(const type_t *type) return type->type_type == TYPE_ALIAS; }
-static inline type_t *type_alias_get_aliasee(const type_t *type) +static inline type_t *type_alias_get_aliasee_type(const type_t *type) { assert(type_is_alias(type)); - return type->orig; + return type->details.alias.aliasee.type; }
static inline ifref_list_t *type_coclass_get_ifaces(const type_t *type) diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h index 29ff266388..43931c9813 100644 --- a/tools/widl/widltypes.h +++ b/tools/widl/widltypes.h @@ -393,6 +393,11 @@ struct bitfield_details const expr_t *bits; };
+struct alias_details +{ + struct _decl_spec_t aliasee; +}; + #define HASHMAX 64
struct namespace { @@ -438,9 +443,9 @@ struct _type_t { struct basic_details basic; struct pointer_details pointer; struct bitfield_details bitfield; + struct alias_details alias; } details; const char *c_name; - type_t *orig; /* dup'd types */ unsigned int typestring_offset; unsigned int ptrdesc; /* used for complex structs */ int typelib_idx; diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index 98fa7ddadf..420404af6d 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -912,10 +912,10 @@ static int encode_type(
case VT_SAFEARRAY: { - type_t *element_type = type_alias_get_aliasee(type_array_get_element_type(type)); + type_t *element_type = type_alias_get_aliasee_type(type_array_get_element_type(type)); int next_vt = get_type_vt(element_type);
- encode_type(typelib, next_vt, type_alias_get_aliasee(type_array_get_element_type(type)), + encode_type(typelib, next_vt, type_alias_get_aliasee_type(type_array_get_element_type(type)), &target_type, &child_size);
for (typeoffset = 0; typeoffset < typelib->typelib_segdir[MSFT_SEG_TYPEDESC].length; typeoffset += 8) { @@ -968,7 +968,7 @@ static int encode_type( { /* typedef'd types without public attribute aren't included in the typelib */ while (type_is_alias(type) && !is_attr(type->attrs, ATTR_PUBLIC)) - type = type_alias_get_aliasee(type); + type = type_alias_get_aliasee_type(type);
chat("encode_type: VT_USERDEFINED - adding new type %s, real type %d\n", type->name, type_get_type(type)); @@ -1114,7 +1114,7 @@ static int encode_var( if (target_type & 0x80000000) { mix_field = ((target_type >> 16) & 0x3fff) | VT_BYREF; } else if (get_type_vt(ref) == VT_SAFEARRAY) { - type_t *element_type = type_alias_get_aliasee(type_array_get_element_type(ref)); + type_t *element_type = type_alias_get_aliasee_type(type_array_get_element_type(ref)); mix_field = get_type_vt(element_type) | VT_ARRAY | VT_BYREF; } else { typedata = (void *)&typelib->typelib_segment_data[MSFT_SEG_TYPEDESC][target_type]; @@ -2181,7 +2181,7 @@ static void add_typedef_typeinfo(msft_typelib_t *typelib, type_t *tdef) if (-1 < tdef->typelib_idx) return;
- type = type_alias_get_aliasee(tdef); + type = type_alias_get_aliasee_type(tdef);
if (!type->name || strcmp(tdef->name, type->name) != 0) { @@ -2364,7 +2364,7 @@ static void add_entry(msft_typelib_t *typelib, const statement_t *stmt) if (is_attr(type_entry->type->attrs, ATTR_PUBLIC)) add_typedef_typeinfo(typelib, type_entry->type); else - add_type_typeinfo(typelib, type_alias_get_aliasee(type_entry->type)); + add_type_typeinfo(typelib, type_alias_get_aliasee_type(type_entry->type)); } break; }