mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 18:04:21 +00:00
widl: Handle encapsulated unions in type libraries.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
732f67ed38
commit
4f4763ab6b
|
@ -976,6 +976,7 @@ static int encode_type(
|
||||||
switch (type_get_type(type))
|
switch (type_get_type(type))
|
||||||
{
|
{
|
||||||
case TYPE_STRUCT:
|
case TYPE_STRUCT:
|
||||||
|
case TYPE_ENCAPSULATED_UNION:
|
||||||
add_structure_typeinfo(typelib, type);
|
add_structure_typeinfo(typelib, type);
|
||||||
break;
|
break;
|
||||||
case TYPE_INTERFACE:
|
case TYPE_INTERFACE:
|
||||||
|
@ -2119,6 +2120,7 @@ static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface)
|
||||||
|
|
||||||
static void add_structure_typeinfo(msft_typelib_t *typelib, type_t *structure)
|
static void add_structure_typeinfo(msft_typelib_t *typelib, type_t *structure)
|
||||||
{
|
{
|
||||||
|
var_list_t *fields;
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
var_t *cur;
|
var_t *cur;
|
||||||
msft_typeinfo_t *msft_typeinfo;
|
msft_typeinfo_t *msft_typeinfo;
|
||||||
|
@ -2130,9 +2132,16 @@ static void add_structure_typeinfo(msft_typelib_t *typelib, type_t *structure)
|
||||||
msft_typeinfo = create_msft_typeinfo(typelib, TKIND_RECORD, structure->name, structure->attrs);
|
msft_typeinfo = create_msft_typeinfo(typelib, TKIND_RECORD, structure->name, structure->attrs);
|
||||||
msft_typeinfo->typeinfo->size = 0;
|
msft_typeinfo->typeinfo->size = 0;
|
||||||
|
|
||||||
if (type_struct_get_fields(structure))
|
if (type_get_type(structure) == TYPE_STRUCT)
|
||||||
LIST_FOR_EACH_ENTRY( cur, type_struct_get_fields(structure), var_t, entry )
|
fields = type_struct_get_fields(structure);
|
||||||
|
else
|
||||||
|
fields = type_encapsulated_union_get_fields(structure);
|
||||||
|
|
||||||
|
if (fields)
|
||||||
|
{
|
||||||
|
LIST_FOR_EACH_ENTRY( cur, fields, var_t, entry )
|
||||||
add_var_desc(msft_typeinfo, idx++, cur);
|
add_var_desc(msft_typeinfo, idx++, cur);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_enum_typeinfo(msft_typelib_t *typelib, type_t *enumeration)
|
static void add_enum_typeinfo(msft_typelib_t *typelib, type_t *enumeration)
|
||||||
|
@ -2320,6 +2329,7 @@ static void add_type_typeinfo(msft_typelib_t *typelib, type_t *type)
|
||||||
add_interface_typeinfo(typelib, type);
|
add_interface_typeinfo(typelib, type);
|
||||||
break;
|
break;
|
||||||
case TYPE_STRUCT:
|
case TYPE_STRUCT:
|
||||||
|
case TYPE_ENCAPSULATED_UNION:
|
||||||
add_structure_typeinfo(typelib, type);
|
add_structure_typeinfo(typelib, type);
|
||||||
break;
|
break;
|
||||||
case TYPE_ENUM:
|
case TYPE_ENUM:
|
||||||
|
|
Loading…
Reference in a new issue