Update widl to Wine 4.2.
diff --git a/mingw-w64-tools/widl/VERSION b/mingw-w64-tools/widl/VERSION
index 749bcfb..ee95896 100644
--- a/mingw-w64-tools/widl/VERSION
+++ b/mingw-w64-tools/widl/VERSION
@@ -1 +1 @@
-WIDL version 3.20
+WIDL version 4.1
diff --git a/mingw-w64-tools/widl/configure b/mingw-w64-tools/widl/configure
index 9d67dd4..33d3b8a 100755
--- a/mingw-w64-tools/widl/configure
+++ b/mingw-w64-tools/widl/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for widl 3.20.
+# Generated by GNU Autoconf 2.69 for widl 4.1.
#
# Report bugs to <mingw-w64-public@lists.sourceforge.net>.
#
@@ -580,8 +580,8 @@
# Identity of this package.
PACKAGE_NAME='widl'
PACKAGE_TARNAME='widl'
-PACKAGE_VERSION='3.20'
-PACKAGE_STRING='widl 3.20'
+PACKAGE_VERSION='4.1'
+PACKAGE_STRING='widl 4.1'
PACKAGE_BUGREPORT='mingw-w64-public@lists.sourceforge.net'
PACKAGE_URL=''
@@ -1284,7 +1284,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures widl 3.20 to adapt to many kinds of systems.
+\`configure' configures widl 4.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1355,7 +1355,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of widl 3.20:";;
+ short | recursive ) echo "Configuration of widl 4.1:";;
esac
cat <<\_ACEOF
@@ -1457,7 +1457,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-widl configure 3.20
+widl configure 4.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2010,7 +2010,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by widl $as_me 3.20, which was
+It was created by widl $as_me 4.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2988,7 +2988,7 @@
# Define the identity of the package.
PACKAGE='widl'
- VERSION='3.20'
+ VERSION='4.1'
cat >>confdefs.h <<_ACEOF
@@ -5422,7 +5422,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by widl $as_me 3.20, which was
+This file was extended by widl $as_me 4.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -5488,7 +5488,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-widl config.status 3.20
+widl config.status 4.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/mingw-w64-tools/widl/include/windef.h b/mingw-w64-tools/widl/include/windef.h
index 8e8a08a..f9a570d 100644
--- a/mingw-w64-tools/widl/include/windef.h
+++ b/mingw-w64-tools/widl/include/windef.h
@@ -450,6 +450,7 @@
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
+#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5)
#ifdef __cplusplus
}
diff --git a/mingw-w64-tools/widl/include/winnt.h b/mingw-w64-tools/widl/include/winnt.h
index 6b5b660..5694ad7 100644
--- a/mingw-w64-tools/widl/include/winnt.h
+++ b/mingw-w64-tools/widl/include/winnt.h
@@ -757,6 +757,8 @@
#define UNICODE_STRING_MAX_CHARS 32767
#define FIELD_OFFSET(type, field) ((LONG)offsetof(type, field))
+#define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
+#define RTL_SIZEOF_THROUGH_FIELD(type, field) (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field))
#define CONTAINING_RECORD(address, type, field) \
((type *)((PCHAR)(address) - offsetof(type, field)))
@@ -778,10 +780,9 @@
#ifdef _WIN64
-typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY;
typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
- PSLIST_ENTRY Next;
-} SLIST_ENTRY;
+ struct _SLIST_ENTRY *Next;
+} SLIST_ENTRY, *PSLIST_ENTRY;
typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
struct {
@@ -968,6 +969,7 @@
#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x0008) /* 387 state */
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010) /* DB 0-3,6,7 */
#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | 0x0020)
+#define CONTEXT_XSTATE (CONTEXT_i386 | 0x0040)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \
CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
@@ -1013,6 +1015,7 @@
#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x0004)
#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x0008)
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x0010)
+#define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x0040)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
@@ -1875,6 +1878,9 @@
DWORD64 Wvr[ARM64_MAX_WATCHPOINTS]; /* 380 */
} CONTEXT;
+BOOLEAN CDECL RtlAddFunctionTable(RUNTIME_FUNCTION*,DWORD,ULONG_PTR);
+BOOLEAN CDECL RtlDeleteFunctionTable(RUNTIME_FUNCTION*);
+
#endif /* __aarch64__ */
@@ -2126,6 +2132,7 @@
#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008))
#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010))
#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020))
+#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040))
#define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
#define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | \
WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | \
@@ -3739,6 +3746,7 @@
#define IMAGE_DEBUG_TYPE_POGO 13
#define IMAGE_DEBUG_TYPE_ILTCG 14
#define IMAGE_DEBUG_TYPE_MPX 15
+#define IMAGE_DEBUG_TYPE_REPRO 16
typedef enum ReplacesCorHdrNumericDefines
{
diff --git a/mingw-w64-tools/widl/include/winnt.rh b/mingw-w64-tools/widl/include/winnt.rh
index 5f07168..50aafb1 100644
--- a/mingw-w64-tools/widl/include/winnt.rh
+++ b/mingw-w64-tools/widl/include/winnt.rh
@@ -44,7 +44,8 @@
#define LANG_ARABIC 0x01
#define LANG_ARMENIAN 0x2b
#define LANG_ASSAMESE 0x4d
-#define LANG_AZERI 0x2c
+#define LANG_AZERBAIJANI 0x2c
+#define LANG_AZERI LANG_AZERBAIJANI
#define LANG_BANGLA 0x45
#define LANG_BASHKIR 0x6d
#define LANG_BASQUE 0x2d
@@ -55,6 +56,8 @@
#define LANG_BRETON 0x7e
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
+#define LANG_CENTRAL_KURDISH 0x92
+#define LANG_CHEROKEE 0x5c
#define LANG_CHINESE 0x04
#define LANG_CHINESE_SIMPLIFIED 0x0004
#define LANG_CHINESE_TRADITIONAL 0x7c04
@@ -73,6 +76,7 @@
#define LANG_FINNISH 0x0b
#define LANG_FRENCH 0x0c
#define LANG_FRISIAN 0x62
+#define LANG_FULAH 0x67
#define LANG_GALICIAN 0x56
#define LANG_GEORGIAN 0x37
#define LANG_GERMAN 0x07
@@ -80,6 +84,7 @@
#define LANG_GREENLANDIC 0x6f
#define LANG_GUJARATI 0x47
#define LANG_HAUSA 0x68
+#define LANG_HAWAIIAN 0x75
#define LANG_HEBREW 0x0d
#define LANG_HINDI 0x39
#define LANG_HUNGARIAN 0x0e
@@ -117,16 +122,19 @@
#define LANG_NEPALI 0x61
#define LANG_NORWEGIAN 0x14
#define LANG_OCCITAN 0x82
-#define LANG_ORIYA 0x48
+#define LANG_ODIA 0x48
+#define LANG_ORIYA LANG_ODIA
#define LANG_PASHTO 0x63
#define LANG_PERSIAN 0x29
#define LANG_POLISH 0x15
#define LANG_PORTUGUESE 0x16
+#define LANG_PULAR LANG_FULAH
#define LANG_PUNJABI 0x46
#define LANG_QUECHUA 0x6b
#define LANG_ROMANIAN 0x18
#define LANG_ROMANSH 0x17
#define LANG_RUSSIAN 0x19
+#define LANG_SAKHA 0x85
#define LANG_SAMI 0x3b
#define LANG_SANSKRIT 0x4f
#define LANG_SCOTTISH_GAELIC 0x91
@@ -148,7 +156,8 @@
#define LANG_TELUGU 0x4a
#define LANG_THAI 0x1e
#define LANG_TIBETAN 0x51
-#define LANG_TIGRIGNA 0x73
+#define LANG_TIGRINYA 0x73
+#define LANG_TIGRIGNA LANG_TIGRINYA
#define LANG_TSWANA 0x32
#define LANG_TURKISH 0x1f
#define LANG_TURKMEN 0x42
@@ -157,11 +166,12 @@
#define LANG_UPPER_SORBIAN 0x2e
#define LANG_URDU 0x20
#define LANG_UZBEK 0x43
+#define LANG_VALENCIAN LANG_CATALAN
#define LANG_VIETNAMESE 0x2a
#define LANG_WELSH 0x52
#define LANG_WOLOF 0x88
#define LANG_XHOSA 0x34
-#define LANG_YAKUT 0x85
+#define LANG_YAKUT LANG_SAKHA
#define LANG_YI 0x78
#define LANG_YORUBA 0x6a
#define LANG_ZULU 0x35
@@ -210,8 +220,10 @@
#define SUBLANG_ARABIC_QATAR 0x10
#define SUBLANG_ARMENIAN_ARMENIA 0x01
#define SUBLANG_ASSAMESE_INDIA 0x01
-#define SUBLANG_AZERI_LATIN 0x01
-#define SUBLANG_AZERI_CYRILLIC 0x02
+#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01
+#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02
+#define SUBLANG_AZERI_LATIN SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN
+#define SUBLANG_AZERI_CYRILLIC SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC
#define SUBLANG_BANGLA_BANGLADESH 0x02
#define SUBLANG_BANGLA_INDIA 0x01
#define SUBLANG_BASHKIR_RUSSIA 0x01
@@ -224,6 +236,8 @@
#define SUBLANG_BRETON_FRANCE 0x01
#define SUBLANG_BULGARIAN_BULGARIA 0x01
#define SUBLANG_CATALAN_CATALAN 0x01
+#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01
+#define SUBLANG_CHEROKEE_CHEROKEE 0x01
#define SUBLANG_CHINESE_TRADITIONAL 0x01
#define SUBLANG_CHINESE_SIMPLIFIED 0x02
#define SUBLANG_CHINESE_HONGKONG 0x03
@@ -265,6 +279,7 @@
#define SUBLANG_FRENCH_LUXEMBOURG 0x05
#define SUBLANG_FRENCH_MONACO 0x06
#define SUBLANG_FRISIAN_NETHERLANDS 0x01
+#define SUBLANG_FULAH_SENEGAL 0x02
#define SUBLANG_GALICIAN_GALICIAN 0x01
#define SUBLANG_GEORGIAN_GEORGIA 0x01
#define SUBLANG_GERMAN 0x01
@@ -276,6 +291,7 @@
#define SUBLANG_GREENLANDIC_GREENLAND 0x01
#define SUBLANG_GUJARATI_INDIA 0x01
#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
+#define SUBLANG_HAWAIIAN_US 0x01
#define SUBLANG_HEBREW_ISRAEL 0x01
#define SUBLANG_HINDI_INDIA 0x01
#define SUBLANG_HUNGARIAN_HUNGARY 0x01
@@ -319,19 +335,23 @@
#define SUBLANG_NORWEGIAN_BOKMAL 0x01
#define SUBLANG_NORWEGIAN_NYNORSK 0x02
#define SUBLANG_OCCITAN_FRANCE 0x01
-#define SUBLANG_ORIYA_INDIA 0x01
+#define SUBLANG_ODIA_INDIA 0x01
+#define SUBLANG_ORIYA_INDIA SUBLANG_ODIA_INDIA
#define SUBLANG_PASHTO_AFGHANISTAN 0x01
#define SUBLANG_PERSIAN_IRAN 0x01
#define SUBLANG_POLISH_POLAND 0x01
#define SUBLANG_PORTUGUESE 0x02
#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
+#define SUBLANG_PULAR_SENEGAL SUBLANG_FULAH_SENEGAL
#define SUBLANG_PUNJABI_INDIA 0x01
+#define SUBLANG_PUNJABI_PAKISTAN 0x02
#define SUBLANG_QUECHUA_BOLIVIA 0x01
#define SUBLANG_QUECHUA_ECUADOR 0x02
#define SUBLANG_QUECHUA_PERU 0x03
#define SUBLANG_ROMANIAN_ROMANIA 0x01
#define SUBLANG_ROMANSH_SWITZERLAND 0x01
#define SUBLANG_RUSSIAN_RUSSIA 0x01
+#define SUBLANG_SAKHA_RUSSIA 0x01
#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
@@ -386,14 +406,19 @@
#define SUBLANG_SYRIAC_SYRIA 0x01
#define SUBLANG_TAJIK_TAJIKISTAN 0x01
#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
+#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04
#define SUBLANG_TAMIL_INDIA 0x01
+#define SUBLANG_TAMIL_SRI_LANKA 0x02
#define SUBLANG_TATAR_RUSSIA 0x01
#define SUBLANG_TELUGU_INDIA 0x01
#define SUBLANG_THAI_THAILAND 0x01
#define SUBLANG_TIBETAN_PRC 0x01
#define SUBLANG_TIBETAN_BHUTAN 0x02
-#define SUBLANG_TIGRIGNA_ERITREA 0x02
+#define SUBLANG_TIGRINYA_ERITREA 0x02
+#define SUBLANG_TIGRINYA_ETHIOPIA 0x01
+#define SUBLANG_TIGRIGNA_ERITREA SUBLANG_TIGRINYA_ERITREA
#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
+#define SUBLANG_TSWANA_BOTSWANA 0x02
#define SUBLANG_TURKISH_TURKEY 0x01
#define SUBLANG_TURKMEN_TURKMENISTAN 0x01
#define SUBLANG_UIGHUR_PRC 0x01
@@ -403,11 +428,12 @@
#define SUBLANG_URDU_INDIA 0x02
#define SUBLANG_UZBEK_LATIN 0x01
#define SUBLANG_UZBEK_CYRILLIC 0x02
+#define SUBLANG_VALENCIAN_VALENCIA 0x02
#define SUBLANG_VIETNAMESE_VIETNAM 0x01
#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
#define SUBLANG_WOLOF_SENEGAL 0x01
#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
-#define SUBLANG_YAKUT_RUSSIA 0x01
+#define SUBLANG_YAKUT_RUSSIA SUBLANG_SAKHA_RUSSIA
#define SUBLANG_YI_PRC 0x01
#define SUBLANG_YORUBA_NIGERIA 0x01
#define SUBLANG_ZULU_SOUTH_AFRICA 0x01
diff --git a/mingw-w64-tools/widl/src/client.c b/mingw-w64-tools/widl/src/client.c
index a3b2bbb..30b0dce 100644
--- a/mingw-w64-tools/widl/src/client.c
+++ b/mingw-w64-tools/widl/src/client.c
@@ -627,26 +627,6 @@
if (!client)
return;
- if (do_win32 && do_win64)
- {
- fprintf(client, "#ifndef _WIN64\n\n");
- pointer_size = 4;
- write_client_routines( stmts );
- fprintf(client, "\n#else /* _WIN64 */\n\n");
- pointer_size = 8;
- write_client_routines( stmts );
- fprintf(client, "\n#endif /* _WIN64 */\n");
- }
- else if (do_win32)
- {
- pointer_size = 4;
- write_client_routines( stmts );
- }
- else if (do_win64)
- {
- pointer_size = 8;
- write_client_routines( stmts );
- }
-
+ write_client_routines( stmts );
fclose(client);
}
diff --git a/mingw-w64-tools/widl/src/header.c b/mingw-w64-tools/widl/src/header.c
index defc7f8..f618e02 100644
--- a/mingw-w64-tools/widl/src/header.c
+++ b/mingw-w64-tools/widl/src/header.c
@@ -637,82 +637,77 @@
/* check for types which require additional prototypes to be generated in the
* header */
-void check_for_additional_prototype_types(const var_list_t *list)
+void check_for_additional_prototype_types(type_t *type)
{
- const var_t *v;
-
- if (!list) return;
- LIST_FOR_EACH_ENTRY( v, list, const var_t, entry )
- {
- type_t *type = v->type;
- if (!type) continue;
- for (;;) {
- const char *name = type->name;
- if (type->user_types_registered) break;
- type->user_types_registered = 1;
- if (is_attr(type->attrs, ATTR_CONTEXTHANDLE)) {
- if (!context_handle_registered(name))
- {
- context_handle_t *ch = xmalloc(sizeof(*ch));
- ch->name = xstrdup(name);
- list_add_tail(&context_handle_list, &ch->entry);
- }
- /* don't carry on parsing fields within this type */
- break;
- }
- if ((type_get_type(type) != TYPE_BASIC ||
- type_basic_get_type(type) != TYPE_BASIC_HANDLE) &&
- is_attr(type->attrs, ATTR_HANDLE)) {
- if (!generic_handle_registered(name))
- {
- generic_handle_t *gh = xmalloc(sizeof(*gh));
- gh->name = xstrdup(name);
- list_add_tail(&generic_handle_list, &gh->entry);
- }
- /* don't carry on parsing fields within this type */
- break;
- }
- if (is_attr(type->attrs, ATTR_WIREMARSHAL)) {
- if (!user_type_registered(name))
- {
- user_type_t *ut = xmalloc(sizeof *ut);
- ut->name = xstrdup(name);
- list_add_tail(&user_type_list, &ut->entry);
- }
- /* don't carry on parsing fields within this type as we are already
- * using a wire marshaled type */
- break;
- }
- else if (type_is_complete(type))
+ if (!type) return;
+ for (;;) {
+ const char *name = type->name;
+ if (type->user_types_registered) break;
+ type->user_types_registered = 1;
+ if (is_attr(type->attrs, ATTR_CONTEXTHANDLE)) {
+ if (!context_handle_registered(name))
{
- var_list_t *vars;
- switch (type_get_type_detect_alias(type))
- {
- case TYPE_ENUM:
- vars = type_enum_get_values(type);
- break;
- case TYPE_STRUCT:
- vars = type_struct_get_fields(type);
- break;
- case TYPE_UNION:
- vars = type_union_get_cases(type);
- break;
- default:
- vars = NULL;
- break;
- }
- check_for_additional_prototype_types(vars);
+ context_handle_t *ch = xmalloc(sizeof(*ch));
+ ch->name = xstrdup(name);
+ list_add_tail(&context_handle_list, &ch->entry);
}
-
- if (type_is_alias(type))
- type = type_alias_get_aliasee(type);
- else if (is_ptr(type))
- type = type_pointer_get_ref(type);
- else if (is_array(type))
- type = type_array_get_element(type);
- else
- break;
+ /* don't carry on parsing fields within this type */
+ break;
}
+ if ((type_get_type(type) != TYPE_BASIC ||
+ type_basic_get_type(type) != TYPE_BASIC_HANDLE) &&
+ is_attr(type->attrs, ATTR_HANDLE)) {
+ if (!generic_handle_registered(name))
+ {
+ generic_handle_t *gh = xmalloc(sizeof(*gh));
+ gh->name = xstrdup(name);
+ list_add_tail(&generic_handle_list, &gh->entry);
+ }
+ /* don't carry on parsing fields within this type */
+ break;
+ }
+ if (is_attr(type->attrs, ATTR_WIREMARSHAL)) {
+ if (!user_type_registered(name))
+ {
+ user_type_t *ut = xmalloc(sizeof *ut);
+ ut->name = xstrdup(name);
+ list_add_tail(&user_type_list, &ut->entry);
+ }
+ /* don't carry on parsing fields within this type as we are already
+ * using a wire marshaled type */
+ break;
+ }
+ else if (type_is_complete(type))
+ {
+ var_list_t *vars;
+ const var_t *v;
+ switch (type_get_type_detect_alias(type))
+ {
+ case TYPE_ENUM:
+ vars = type_enum_get_values(type);
+ break;
+ case TYPE_STRUCT:
+ vars = type_struct_get_fields(type);
+ break;
+ case TYPE_UNION:
+ vars = type_union_get_cases(type);
+ break;
+ default:
+ vars = NULL;
+ break;
+ }
+ if (vars) LIST_FOR_EACH_ENTRY( v, vars, const var_t, entry )
+ check_for_additional_prototype_types(v->type);
+ }
+
+ if (type_is_alias(type))
+ type = type_alias_get_aliasee(type);
+ else if (is_ptr(type))
+ type = type_pointer_get_ref(type);
+ else if (is_array(type))
+ type = type_array_get_element(type);
+ else
+ break;
}
}
@@ -1784,15 +1779,15 @@
}
fprintf(header, "/*** Autogenerated by WIDL %s from %s - Do not edit ***/\n\n", PACKAGE_VERSION, input_name);
+ fprintf(header, "#ifdef _WIN32\n");
fprintf(header, "#ifndef __REQUIRED_RPCNDR_H_VERSION__\n");
fprintf(header, "#define __REQUIRED_RPCNDR_H_VERSION__ 475\n");
- fprintf(header, "#endif\n\n");
-
+ fprintf(header, "#endif\n");
fprintf(header, "#include <rpc.h>\n" );
fprintf(header, "#include <rpcndr.h>\n" );
if (!for_each_serializable(stmts, NULL, serializable_exists))
fprintf(header, "#include <midles.h>\n" );
- fprintf(header, "\n" );
+ fprintf(header, "#endif\n\n");
fprintf(header, "#ifndef COM_NO_WINDOWS_H\n");
fprintf(header, "#include <windows.h>\n");
diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c
index 6266e05..74d10b0 100644
--- a/mingw-w64-tools/widl/src/parser.tab.c
+++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.1. */
/* Bison implementation for Yacc-like parsers in C
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.0.5"
+#define YYBISON_VERSION "3.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -504,13 +504,13 @@
#ifdef YYTYPE_UINT16
typedef YYTYPE_UINT16 yytype_uint16;
#else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
#endif
#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
-typedef short int yytype_int16;
+typedef short yytype_int16;
#endif
#ifndef YYSIZE_T
@@ -522,7 +522,7 @@
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
-# define YYSIZE_T unsigned int
+# define YYSIZE_T unsigned
# endif
#endif
@@ -574,7 +574,7 @@
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
@@ -742,7 +742,7 @@
#define YYMAXUTOK 443
#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, without out-of-bounds checking. */
@@ -2072,7 +2072,7 @@
static void
yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
{
- unsigned long int yylno = yyrline[yyrule];
+ unsigned long yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -2504,7 +2504,7 @@
yyvsp = yyvs + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ (unsigned long) yystacksize));
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
@@ -2615,7 +2615,7 @@
switch (yyn)
{
case 2:
-#line 325 "parser.y" /* yacc.c:1648 */
+#line 325 "parser.y" /* yacc.c:1651 */
{ fix_incomplete();
check_statements((yyvsp[-1].stmt_list), FALSE);
check_all_user_types((yyvsp[-1].stmt_list));
@@ -2629,197 +2629,197 @@
write_dlldata((yyvsp[-1].stmt_list));
write_local_stubs((yyvsp[-1].stmt_list));
}
-#line 2633 "parser.tab.c" /* yacc.c:1648 */
+#line 2633 "parser.tab.c" /* yacc.c:1651 */
break;
case 5:
-#line 342 "parser.y" /* yacc.c:1648 */
+#line 342 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = NULL; }
-#line 2639 "parser.tab.c" /* yacc.c:1648 */
+#line 2639 "parser.tab.c" /* yacc.c:1651 */
break;
case 6:
-#line 343 "parser.y" /* yacc.c:1648 */
+#line 343 "parser.y" /* yacc.c:1651 */
{ push_namespace((yyvsp[-1].str)); }
-#line 2645 "parser.tab.c" /* yacc.c:1648 */
+#line 2645 "parser.tab.c" /* yacc.c:1651 */
break;
case 7:
-#line 344 "parser.y" /* yacc.c:1648 */
+#line 344 "parser.y" /* yacc.c:1651 */
{ pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2651 "parser.tab.c" /* yacc.c:1648 */
+#line 2651 "parser.tab.c" /* yacc.c:1651 */
break;
case 8:
-#line 345 "parser.y" /* yacc.c:1648 */
+#line 345 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2657 "parser.tab.c" /* yacc.c:1648 */
+#line 2657 "parser.tab.c" /* yacc.c:1651 */
break;
case 9:
-#line 346 "parser.y" /* yacc.c:1648 */
+#line 346 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2663 "parser.tab.c" /* yacc.c:1648 */
+#line 2663 "parser.tab.c" /* yacc.c:1651 */
break;
case 10:
-#line 347 "parser.y" /* yacc.c:1648 */
+#line 347 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = (yyvsp[-2].stmt_list);
reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0);
}
-#line 2671 "parser.tab.c" /* yacc.c:1648 */
+#line 2671 "parser.tab.c" /* yacc.c:1651 */
break;
case 11:
-#line 350 "parser.y" /* yacc.c:1648 */
+#line 350 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
}
-#line 2679 "parser.tab.c" /* yacc.c:1648 */
+#line 2679 "parser.tab.c" /* yacc.c:1651 */
break;
case 12:
-#line 353 "parser.y" /* yacc.c:1648 */
+#line 353 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2685 "parser.tab.c" /* yacc.c:1648 */
+#line 2685 "parser.tab.c" /* yacc.c:1651 */
break;
case 13:
-#line 354 "parser.y" /* yacc.c:1648 */
+#line 354 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2691 "parser.tab.c" /* yacc.c:1648 */
+#line 2691 "parser.tab.c" /* yacc.c:1651 */
break;
case 14:
-#line 355 "parser.y" /* yacc.c:1648 */
+#line 355 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2697 "parser.tab.c" /* yacc.c:1648 */
+#line 2697 "parser.tab.c" /* yacc.c:1651 */
break;
case 15:
-#line 358 "parser.y" /* yacc.c:1648 */
+#line 358 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = NULL; }
-#line 2703 "parser.tab.c" /* yacc.c:1648 */
+#line 2703 "parser.tab.c" /* yacc.c:1651 */
break;
case 16:
-#line 359 "parser.y" /* yacc.c:1648 */
+#line 359 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2709 "parser.tab.c" /* yacc.c:1648 */
+#line 2709 "parser.tab.c" /* yacc.c:1651 */
break;
case 17:
-#line 360 "parser.y" /* yacc.c:1648 */
+#line 360 "parser.y" /* yacc.c:1651 */
{ push_namespace((yyvsp[-1].str)); }
-#line 2715 "parser.tab.c" /* yacc.c:1648 */
+#line 2715 "parser.tab.c" /* yacc.c:1651 */
break;
case 18:
-#line 361 "parser.y" /* yacc.c:1648 */
+#line 361 "parser.y" /* yacc.c:1651 */
{ pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2721 "parser.tab.c" /* yacc.c:1648 */
+#line 2721 "parser.tab.c" /* yacc.c:1651 */
break;
case 19:
-#line 362 "parser.y" /* yacc.c:1648 */
+#line 362 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2727 "parser.tab.c" /* yacc.c:1648 */
+#line 2727 "parser.tab.c" /* yacc.c:1651 */
break;
case 20:
-#line 363 "parser.y" /* yacc.c:1648 */
+#line 363 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 2733 "parser.tab.c" /* yacc.c:1648 */
+#line 2733 "parser.tab.c" /* yacc.c:1651 */
break;
case 21:
-#line 364 "parser.y" /* yacc.c:1648 */
+#line 364 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
}
-#line 2741 "parser.tab.c" /* yacc.c:1648 */
+#line 2741 "parser.tab.c" /* yacc.c:1651 */
break;
case 22:
-#line 367 "parser.y" /* yacc.c:1648 */
+#line 367 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2747 "parser.tab.c" /* yacc.c:1648 */
+#line 2747 "parser.tab.c" /* yacc.c:1651 */
break;
case 23:
-#line 368 "parser.y" /* yacc.c:1648 */
+#line 368 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2753 "parser.tab.c" /* yacc.c:1648 */
+#line 2753 "parser.tab.c" /* yacc.c:1651 */
break;
case 24:
-#line 369 "parser.y" /* yacc.c:1648 */
+#line 369 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
-#line 2759 "parser.tab.c" /* yacc.c:1648 */
+#line 2759 "parser.tab.c" /* yacc.c:1651 */
break;
case 25:
-#line 370 "parser.y" /* yacc.c:1648 */
+#line 370 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2765 "parser.tab.c" /* yacc.c:1648 */
+#line 2765 "parser.tab.c" /* yacc.c:1651 */
break;
case 26:
-#line 373 "parser.y" /* yacc.c:1648 */
+#line 373 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = NULL; }
-#line 2771 "parser.tab.c" /* yacc.c:1648 */
+#line 2771 "parser.tab.c" /* yacc.c:1651 */
break;
case 27:
-#line 374 "parser.y" /* yacc.c:1648 */
+#line 374 "parser.y" /* yacc.c:1651 */
{ (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2777 "parser.tab.c" /* yacc.c:1648 */
+#line 2777 "parser.tab.c" /* yacc.c:1651 */
break;
case 30:
-#line 382 "parser.y" /* yacc.c:1648 */
+#line 382 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
-#line 2783 "parser.tab.c" /* yacc.c:1648 */
+#line 2783 "parser.tab.c" /* yacc.c:1651 */
break;
case 31:
-#line 383 "parser.y" /* yacc.c:1648 */
+#line 383 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
-#line 2789 "parser.tab.c" /* yacc.c:1648 */
+#line 2789 "parser.tab.c" /* yacc.c:1651 */
break;
case 32:
-#line 384 "parser.y" /* yacc.c:1648 */
+#line 384 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
-#line 2795 "parser.tab.c" /* yacc.c:1648 */
+#line 2795 "parser.tab.c" /* yacc.c:1651 */
break;
case 33:
-#line 385 "parser.y" /* yacc.c:1648 */
+#line 385 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = make_statement_import((yyvsp[0].str)); }
-#line 2801 "parser.tab.c" /* yacc.c:1648 */
+#line 2801 "parser.tab.c" /* yacc.c:1651 */
break;
case 34:
-#line 386 "parser.y" /* yacc.c:1648 */
+#line 386 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = (yyvsp[-1].statement); }
-#line 2807 "parser.tab.c" /* yacc.c:1648 */
+#line 2807 "parser.tab.c" /* yacc.c:1651 */
break;
case 35:
-#line 387 "parser.y" /* yacc.c:1648 */
+#line 387 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
-#line 2813 "parser.tab.c" /* yacc.c:1648 */
+#line 2813 "parser.tab.c" /* yacc.c:1651 */
break;
case 36:
-#line 388 "parser.y" /* yacc.c:1648 */
+#line 388 "parser.y" /* yacc.c:1651 */
{ (yyval.statement) = NULL; }
-#line 2819 "parser.tab.c" /* yacc.c:1648 */
+#line 2819 "parser.tab.c" /* yacc.c:1651 */
break;
case 37:
-#line 392 "parser.y" /* yacc.c:1648 */
+#line 392 "parser.y" /* yacc.c:1651 */
{
int result;
(yyval.statement) = NULL;
@@ -2827,909 +2827,909 @@
if(!result)
error_loc("expected \"disable\" or \"enable\"\n");
}
-#line 2831 "parser.tab.c" /* yacc.c:1648 */
+#line 2831 "parser.tab.c" /* yacc.c:1651 */
break;
case 38:
-#line 402 "parser.y" /* yacc.c:1648 */
+#line 402 "parser.y" /* yacc.c:1651 */
{ (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); }
-#line 2837 "parser.tab.c" /* yacc.c:1648 */
+#line 2837 "parser.tab.c" /* yacc.c:1651 */
break;
case 39:
-#line 403 "parser.y" /* yacc.c:1648 */
+#line 403 "parser.y" /* yacc.c:1651 */
{ (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); }
-#line 2843 "parser.tab.c" /* yacc.c:1648 */
+#line 2843 "parser.tab.c" /* yacc.c:1651 */
break;
case 41:
-#line 408 "parser.y" /* yacc.c:1648 */
+#line 408 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 2849 "parser.tab.c" /* yacc.c:1648 */
+#line 2849 "parser.tab.c" /* yacc.c:1651 */
break;
case 43:
-#line 410 "parser.y" /* yacc.c:1648 */
+#line 410 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 2855 "parser.tab.c" /* yacc.c:1648 */
+#line 2855 "parser.tab.c" /* yacc.c:1651 */
break;
case 45:
-#line 412 "parser.y" /* yacc.c:1648 */
+#line 412 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 2861 "parser.tab.c" /* yacc.c:1648 */
+#line 2861 "parser.tab.c" /* yacc.c:1651 */
break;
case 46:
-#line 413 "parser.y" /* yacc.c:1648 */
+#line 413 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
-#line 2867 "parser.tab.c" /* yacc.c:1648 */
+#line 2867 "parser.tab.c" /* yacc.c:1651 */
break;
case 47:
-#line 414 "parser.y" /* yacc.c:1648 */
+#line 414 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
-#line 2873 "parser.tab.c" /* yacc.c:1648 */
+#line 2873 "parser.tab.c" /* yacc.c:1651 */
break;
case 48:
-#line 415 "parser.y" /* yacc.c:1648 */
+#line 415 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
-#line 2879 "parser.tab.c" /* yacc.c:1648 */
+#line 2879 "parser.tab.c" /* yacc.c:1651 */
break;
case 49:
-#line 418 "parser.y" /* yacc.c:1648 */
+#line 418 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[-1].str); }
-#line 2885 "parser.tab.c" /* yacc.c:1648 */
+#line 2885 "parser.tab.c" /* yacc.c:1651 */
break;
case 50:
-#line 420 "parser.y" /* yacc.c:1648 */
+#line 420 "parser.y" /* yacc.c:1651 */
{ assert(yychar == YYEMPTY);
(yyval.import) = xmalloc(sizeof(struct _import_t));
(yyval.import)->name = (yyvsp[-1].str);
(yyval.import)->import_performed = do_import((yyvsp[-1].str));
if (!(yyval.import)->import_performed) yychar = aEOF;
}
-#line 2896 "parser.tab.c" /* yacc.c:1648 */
+#line 2896 "parser.tab.c" /* yacc.c:1651 */
break;
case 51:
-#line 428 "parser.y" /* yacc.c:1648 */
+#line 428 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[-2].import)->name;
if ((yyvsp[-2].import)->import_performed) pop_import();
free((yyvsp[-2].import));
}
-#line 2905 "parser.tab.c" /* yacc.c:1648 */
+#line 2905 "parser.tab.c" /* yacc.c:1651 */
break;
case 52:
-#line 435 "parser.y" /* yacc.c:1648 */
+#line 435 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str), current_typelib); }
-#line 2911 "parser.tab.c" /* yacc.c:1648 */
+#line 2911 "parser.tab.c" /* yacc.c:1651 */
break;
case 53:
-#line 438 "parser.y" /* yacc.c:1648 */
+#line 438 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[0].str); }
-#line 2917 "parser.tab.c" /* yacc.c:1648 */
+#line 2917 "parser.tab.c" /* yacc.c:1651 */
break;
case 54:
-#line 439 "parser.y" /* yacc.c:1648 */
+#line 439 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[0].str); }
-#line 2923 "parser.tab.c" /* yacc.c:1648 */
+#line 2923 "parser.tab.c" /* yacc.c:1651 */
break;
case 55:
-#line 441 "parser.y" /* yacc.c:1648 */
+#line 441 "parser.y" /* yacc.c:1651 */
{ (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
if (!parse_only && do_typelib) current_typelib = (yyval.typelib);
}
-#line 2931 "parser.tab.c" /* yacc.c:1648 */
+#line 2931 "parser.tab.c" /* yacc.c:1651 */
break;
case 56:
-#line 446 "parser.y" /* yacc.c:1648 */
+#line 446 "parser.y" /* yacc.c:1651 */
{ (yyval.typelib) = (yyvsp[-3].typelib); (yyval.typelib)->stmts = (yyvsp[-2].stmt_list); }
-#line 2937 "parser.tab.c" /* yacc.c:1648 */
+#line 2937 "parser.tab.c" /* yacc.c:1651 */
break;
case 57:
-#line 449 "parser.y" /* yacc.c:1648 */
+#line 449 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 2943 "parser.tab.c" /* yacc.c:1648 */
+#line 2943 "parser.tab.c" /* yacc.c:1651 */
break;
case 59:
-#line 453 "parser.y" /* yacc.c:1648 */
+#line 453 "parser.y" /* yacc.c:1651 */
{ check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
-#line 2949 "parser.tab.c" /* yacc.c:1648 */
+#line 2949 "parser.tab.c" /* yacc.c:1651 */
break;
case 60:
-#line 454 "parser.y" /* yacc.c:1648 */
+#line 454 "parser.y" /* yacc.c:1651 */
{ check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
-#line 2955 "parser.tab.c" /* yacc.c:1648 */
+#line 2955 "parser.tab.c" /* yacc.c:1651 */
break;
case 62:
-#line 458 "parser.y" /* yacc.c:1648 */
+#line 458 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
-#line 2961 "parser.tab.c" /* yacc.c:1648 */
+#line 2961 "parser.tab.c" /* yacc.c:1651 */
break;
case 63:
-#line 462 "parser.y" /* yacc.c:1648 */
+#line 462 "parser.y" /* yacc.c:1651 */
{ if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
error_loc("invalid storage class for function parameter\n");
(yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
}
-#line 2971 "parser.tab.c" /* yacc.c:1648 */
+#line 2971 "parser.tab.c" /* yacc.c:1651 */
break;
case 64:
-#line 467 "parser.y" /* yacc.c:1648 */
+#line 467 "parser.y" /* yacc.c:1651 */
{ if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
error_loc("invalid storage class for function parameter\n");
(yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
}
-#line 2981 "parser.tab.c" /* yacc.c:1648 */
+#line 2981 "parser.tab.c" /* yacc.c:1651 */
break;
case 65:
-#line 474 "parser.y" /* yacc.c:1648 */
+#line 474 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = (yyvsp[-1].expr);
if (!(yyval.expr)->is_const || (yyval.expr)->cval <= 0)
error_loc("array dimension is not a positive integer constant\n");
}
-#line 2990 "parser.tab.c" /* yacc.c:1648 */
+#line 2990 "parser.tab.c" /* yacc.c:1651 */
break;
case 66:
-#line 478 "parser.y" /* yacc.c:1648 */
+#line 478 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2996 "parser.tab.c" /* yacc.c:1648 */
+#line 2996 "parser.tab.c" /* yacc.c:1651 */
break;
case 67:
-#line 479 "parser.y" /* yacc.c:1648 */
+#line 479 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr(EXPR_VOID); }
-#line 3002 "parser.tab.c" /* yacc.c:1648 */
+#line 3002 "parser.tab.c" /* yacc.c:1651 */
break;
case 68:
-#line 482 "parser.y" /* yacc.c:1648 */
+#line 482 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = NULL; }
-#line 3008 "parser.tab.c" /* yacc.c:1648 */
+#line 3008 "parser.tab.c" /* yacc.c:1651 */
break;
case 70:
-#line 487 "parser.y" /* yacc.c:1648 */
+#line 487 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 3014 "parser.tab.c" /* yacc.c:1648 */
+#line 3014 "parser.tab.c" /* yacc.c:1651 */
break;
case 71:
-#line 490 "parser.y" /* yacc.c:1648 */
+#line 490 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
-#line 3020 "parser.tab.c" /* yacc.c:1648 */
+#line 3020 "parser.tab.c" /* yacc.c:1651 */
break;
case 72:
-#line 491 "parser.y" /* yacc.c:1648 */
+#line 491 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
-#line 3026 "parser.tab.c" /* yacc.c:1648 */
+#line 3026 "parser.tab.c" /* yacc.c:1651 */
break;
case 73:
-#line 492 "parser.y" /* yacc.c:1648 */
+#line 492 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
-#line 3032 "parser.tab.c" /* yacc.c:1648 */
+#line 3032 "parser.tab.c" /* yacc.c:1651 */
break;
case 74:
-#line 495 "parser.y" /* yacc.c:1648 */
+#line 495 "parser.y" /* yacc.c:1651 */
{ (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
-#line 3038 "parser.tab.c" /* yacc.c:1648 */
+#line 3038 "parser.tab.c" /* yacc.c:1651 */
break;
case 75:
-#line 496 "parser.y" /* yacc.c:1648 */
+#line 496 "parser.y" /* yacc.c:1651 */
{ (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
-#line 3044 "parser.tab.c" /* yacc.c:1648 */
+#line 3044 "parser.tab.c" /* yacc.c:1651 */
break;
case 76:
-#line 499 "parser.y" /* yacc.c:1648 */
+#line 499 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = NULL; }
-#line 3050 "parser.tab.c" /* yacc.c:1648 */
+#line 3050 "parser.tab.c" /* yacc.c:1651 */
break;
case 77:
-#line 500 "parser.y" /* yacc.c:1648 */
+#line 500 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
-#line 3056 "parser.tab.c" /* yacc.c:1648 */
+#line 3056 "parser.tab.c" /* yacc.c:1651 */
break;
case 78:
-#line 501 "parser.y" /* yacc.c:1648 */
+#line 501 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
-#line 3062 "parser.tab.c" /* yacc.c:1648 */
+#line 3062 "parser.tab.c" /* yacc.c:1651 */
break;
case 79:
-#line 502 "parser.y" /* yacc.c:1648 */
+#line 502 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_APPOBJECT); }
-#line 3068 "parser.tab.c" /* yacc.c:1648 */
+#line 3068 "parser.tab.c" /* yacc.c:1651 */
break;
case 80:
-#line 503 "parser.y" /* yacc.c:1648 */
+#line 503 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_ASYNC); }
-#line 3074 "parser.tab.c" /* yacc.c:1648 */
+#line 3074 "parser.tab.c" /* yacc.c:1651 */
break;
case 81:
-#line 504 "parser.y" /* yacc.c:1648 */
+#line 504 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
-#line 3080 "parser.tab.c" /* yacc.c:1648 */
+#line 3080 "parser.tab.c" /* yacc.c:1651 */
break;
case 82:
-#line 505 "parser.y" /* yacc.c:1648 */
+#line 505 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_BINDABLE); }
-#line 3086 "parser.tab.c" /* yacc.c:1648 */
+#line 3086 "parser.tab.c" /* yacc.c:1651 */
break;
case 83:
-#line 506 "parser.y" /* yacc.c:1648 */
+#line 506 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_BROADCAST); }
-#line 3092 "parser.tab.c" /* yacc.c:1648 */
+#line 3092 "parser.tab.c" /* yacc.c:1651 */
break;
case 84:
-#line 507 "parser.y" /* yacc.c:1648 */
+#line 507 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
-#line 3098 "parser.tab.c" /* yacc.c:1648 */
+#line 3098 "parser.tab.c" /* yacc.c:1651 */
break;
case 85:
-#line 508 "parser.y" /* yacc.c:1648 */
+#line 508 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
-#line 3104 "parser.tab.c" /* yacc.c:1648 */
+#line 3104 "parser.tab.c" /* yacc.c:1651 */
break;
case 86:
-#line 509 "parser.y" /* yacc.c:1648 */
+#line 509 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_CODE); }
-#line 3110 "parser.tab.c" /* yacc.c:1648 */
+#line 3110 "parser.tab.c" /* yacc.c:1651 */
break;
case 87:
-#line 510 "parser.y" /* yacc.c:1648 */
+#line 510 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
-#line 3116 "parser.tab.c" /* yacc.c:1648 */
+#line 3116 "parser.tab.c" /* yacc.c:1651 */
break;
case 88:
-#line 511 "parser.y" /* yacc.c:1648 */
+#line 511 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
-#line 3122 "parser.tab.c" /* yacc.c:1648 */
+#line 3122 "parser.tab.c" /* yacc.c:1651 */
break;
case 89:
-#line 512 "parser.y" /* yacc.c:1648 */
+#line 512 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
-#line 3128 "parser.tab.c" /* yacc.c:1648 */
+#line 3128 "parser.tab.c" /* yacc.c:1651 */
break;
case 90:
-#line 513 "parser.y" /* yacc.c:1648 */
+#line 513 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
-#line 3134 "parser.tab.c" /* yacc.c:1648 */
+#line 3134 "parser.tab.c" /* yacc.c:1651 */
break;
case 91:
-#line 514 "parser.y" /* yacc.c:1648 */
+#line 514 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_CONTROL); }
-#line 3140 "parser.tab.c" /* yacc.c:1648 */
+#line 3140 "parser.tab.c" /* yacc.c:1651 */
break;
case 92:
-#line 515 "parser.y" /* yacc.c:1648 */
+#line 515 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 3146 "parser.tab.c" /* yacc.c:1648 */
+#line 3146 "parser.tab.c" /* yacc.c:1651 */
break;
case 93:
-#line 516 "parser.y" /* yacc.c:1648 */
+#line 516 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DEFAULT); }
-#line 3152 "parser.tab.c" /* yacc.c:1648 */
+#line 3152 "parser.tab.c" /* yacc.c:1651 */
break;
case 94:
-#line 517 "parser.y" /* yacc.c:1648 */
+#line 517 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
-#line 3158 "parser.tab.c" /* yacc.c:1648 */
+#line 3158 "parser.tab.c" /* yacc.c:1651 */
break;
case 95:
-#line 518 "parser.y" /* yacc.c:1648 */
+#line 518 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
-#line 3164 "parser.tab.c" /* yacc.c:1648 */
+#line 3164 "parser.tab.c" /* yacc.c:1651 */
break;
case 96:
-#line 519 "parser.y" /* yacc.c:1648 */
+#line 519 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
-#line 3170 "parser.tab.c" /* yacc.c:1648 */
+#line 3170 "parser.tab.c" /* yacc.c:1651 */
break;
case 97:
-#line 520 "parser.y" /* yacc.c:1648 */
+#line 520 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
-#line 3176 "parser.tab.c" /* yacc.c:1648 */
+#line 3176 "parser.tab.c" /* yacc.c:1651 */
break;
case 98:
-#line 521 "parser.y" /* yacc.c:1648 */
+#line 521 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
-#line 3182 "parser.tab.c" /* yacc.c:1648 */
+#line 3182 "parser.tab.c" /* yacc.c:1651 */
break;
case 99:
-#line 522 "parser.y" /* yacc.c:1648 */
+#line 522 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
-#line 3188 "parser.tab.c" /* yacc.c:1648 */
+#line 3188 "parser.tab.c" /* yacc.c:1651 */
break;
case 100:
-#line 523 "parser.y" /* yacc.c:1648 */
+#line 523 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
-#line 3194 "parser.tab.c" /* yacc.c:1648 */
+#line 3194 "parser.tab.c" /* yacc.c:1651 */
break;
case 101:
-#line 524 "parser.y" /* yacc.c:1648 */
+#line 524 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DUAL); }
-#line 3200 "parser.tab.c" /* yacc.c:1648 */
+#line 3200 "parser.tab.c" /* yacc.c:1651 */
break;
case 102:
-#line 525 "parser.y" /* yacc.c:1648 */
+#line 525 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
-#line 3206 "parser.tab.c" /* yacc.c:1648 */
+#line 3206 "parser.tab.c" /* yacc.c:1651 */
break;
case 103:
-#line 526 "parser.y" /* yacc.c:1648 */
+#line 526 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 3212 "parser.tab.c" /* yacc.c:1648 */
+#line 3212 "parser.tab.c" /* yacc.c:1651 */
break;
case 104:
-#line 527 "parser.y" /* yacc.c:1648 */
+#line 527 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
-#line 3218 "parser.tab.c" /* yacc.c:1648 */
+#line 3218 "parser.tab.c" /* yacc.c:1651 */
break;
case 105:
-#line 528 "parser.y" /* yacc.c:1648 */
+#line 528 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
-#line 3224 "parser.tab.c" /* yacc.c:1648 */
+#line 3224 "parser.tab.c" /* yacc.c:1651 */
break;
case 106:
-#line 529 "parser.y" /* yacc.c:1648 */
+#line 529 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 3230 "parser.tab.c" /* yacc.c:1648 */
+#line 3230 "parser.tab.c" /* yacc.c:1651 */
break;
case 107:
-#line 530 "parser.y" /* yacc.c:1648 */
+#line 530 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
-#line 3236 "parser.tab.c" /* yacc.c:1648 */
+#line 3236 "parser.tab.c" /* yacc.c:1651 */
break;
case 108:
-#line 531 "parser.y" /* yacc.c:1648 */
+#line 531 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
-#line 3242 "parser.tab.c" /* yacc.c:1648 */
+#line 3242 "parser.tab.c" /* yacc.c:1651 */
break;
case 109:
-#line 532 "parser.y" /* yacc.c:1648 */
+#line 532 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_HANDLE); }
-#line 3248 "parser.tab.c" /* yacc.c:1648 */
+#line 3248 "parser.tab.c" /* yacc.c:1651 */
break;
case 110:
-#line 533 "parser.y" /* yacc.c:1648 */
+#line 533 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
-#line 3254 "parser.tab.c" /* yacc.c:1648 */
+#line 3254 "parser.tab.c" /* yacc.c:1651 */
break;
case 111:
-#line 534 "parser.y" /* yacc.c:1648 */
+#line 534 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
-#line 3260 "parser.tab.c" /* yacc.c:1648 */
+#line 3260 "parser.tab.c" /* yacc.c:1651 */
break;
case 112:
-#line 535 "parser.y" /* yacc.c:1648 */
+#line 535 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
-#line 3266 "parser.tab.c" /* yacc.c:1648 */
+#line 3266 "parser.tab.c" /* yacc.c:1651 */
break;
case 113:
-#line 536 "parser.y" /* yacc.c:1648 */
+#line 536 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
-#line 3272 "parser.tab.c" /* yacc.c:1648 */
+#line 3272 "parser.tab.c" /* yacc.c:1651 */
break;
case 114:
-#line 537 "parser.y" /* yacc.c:1648 */
+#line 537 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
-#line 3278 "parser.tab.c" /* yacc.c:1648 */
+#line 3278 "parser.tab.c" /* yacc.c:1651 */
break;
case 115:
-#line 538 "parser.y" /* yacc.c:1648 */
+#line 538 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_HIDDEN); }
-#line 3284 "parser.tab.c" /* yacc.c:1648 */
+#line 3284 "parser.tab.c" /* yacc.c:1651 */
break;
case 116:
-#line 539 "parser.y" /* yacc.c:1648 */
+#line 539 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
-#line 3290 "parser.tab.c" /* yacc.c:1648 */
+#line 3290 "parser.tab.c" /* yacc.c:1651 */
break;
case 117:
-#line 540 "parser.y" /* yacc.c:1648 */
+#line 540 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
-#line 3296 "parser.tab.c" /* yacc.c:1648 */
+#line 3296 "parser.tab.c" /* yacc.c:1651 */
break;
case 118:
-#line 541 "parser.y" /* yacc.c:1648 */
+#line 541 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_IGNORE); }
-#line 3302 "parser.tab.c" /* yacc.c:1648 */
+#line 3302 "parser.tab.c" /* yacc.c:1651 */
break;
case 119:
-#line 542 "parser.y" /* yacc.c:1648 */
+#line 542 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
-#line 3308 "parser.tab.c" /* yacc.c:1648 */
+#line 3308 "parser.tab.c" /* yacc.c:1651 */
break;
case 120:
-#line 543 "parser.y" /* yacc.c:1648 */
+#line 543 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
-#line 3314 "parser.tab.c" /* yacc.c:1648 */
+#line 3314 "parser.tab.c" /* yacc.c:1651 */
break;
case 121:
-#line 544 "parser.y" /* yacc.c:1648 */
+#line 544 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
-#line 3320 "parser.tab.c" /* yacc.c:1648 */
+#line 3320 "parser.tab.c" /* yacc.c:1651 */
break;
case 122:
-#line 545 "parser.y" /* yacc.c:1648 */
+#line 545 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_IN); }
-#line 3326 "parser.tab.c" /* yacc.c:1648 */
+#line 3326 "parser.tab.c" /* yacc.c:1651 */
break;
case 123:
-#line 546 "parser.y" /* yacc.c:1648 */
+#line 546 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
-#line 3332 "parser.tab.c" /* yacc.c:1648 */
+#line 3332 "parser.tab.c" /* yacc.c:1651 */
break;
case 124:
-#line 547 "parser.y" /* yacc.c:1648 */
+#line 547 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
-#line 3338 "parser.tab.c" /* yacc.c:1648 */
+#line 3338 "parser.tab.c" /* yacc.c:1651 */
break;
case 125:
-#line 548 "parser.y" /* yacc.c:1648 */
+#line 548 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
-#line 3344 "parser.tab.c" /* yacc.c:1648 */
+#line 3344 "parser.tab.c" /* yacc.c:1651 */
break;
case 126:
-#line 549 "parser.y" /* yacc.c:1648 */
+#line 549 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PARAMLCID); }
-#line 3350 "parser.tab.c" /* yacc.c:1648 */
+#line 3350 "parser.tab.c" /* yacc.c:1651 */
break;
case 127:
-#line 550 "parser.y" /* yacc.c:1648 */
+#line 550 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_LICENSED); }
-#line 3356 "parser.tab.c" /* yacc.c:1648 */
+#line 3356 "parser.tab.c" /* yacc.c:1651 */
break;
case 128:
-#line 551 "parser.y" /* yacc.c:1648 */
+#line 551 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_LOCAL); }
-#line 3362 "parser.tab.c" /* yacc.c:1648 */
+#line 3362 "parser.tab.c" /* yacc.c:1651 */
break;
case 129:
-#line 552 "parser.y" /* yacc.c:1648 */
+#line 552 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_MAYBE); }
-#line 3368 "parser.tab.c" /* yacc.c:1648 */
+#line 3368 "parser.tab.c" /* yacc.c:1651 */
break;
case 130:
-#line 553 "parser.y" /* yacc.c:1648 */
+#line 553 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_MESSAGE); }
-#line 3374 "parser.tab.c" /* yacc.c:1648 */
+#line 3374 "parser.tab.c" /* yacc.c:1651 */
break;
case 131:
-#line 554 "parser.y" /* yacc.c:1648 */
+#line 554 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_NOCODE); }
-#line 3380 "parser.tab.c" /* yacc.c:1648 */
+#line 3380 "parser.tab.c" /* yacc.c:1651 */
break;
case 132:
-#line 555 "parser.y" /* yacc.c:1648 */
+#line 555 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
-#line 3386 "parser.tab.c" /* yacc.c:1648 */
+#line 3386 "parser.tab.c" /* yacc.c:1651 */
break;
case 133:
-#line 556 "parser.y" /* yacc.c:1648 */
+#line 556 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
-#line 3392 "parser.tab.c" /* yacc.c:1648 */
+#line 3392 "parser.tab.c" /* yacc.c:1651 */
break;
case 134:
-#line 557 "parser.y" /* yacc.c:1648 */
+#line 557 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
-#line 3398 "parser.tab.c" /* yacc.c:1648 */
+#line 3398 "parser.tab.c" /* yacc.c:1651 */
break;
case 135:
-#line 558 "parser.y" /* yacc.c:1648 */
+#line 558 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_NOTIFY); }
-#line 3404 "parser.tab.c" /* yacc.c:1648 */
+#line 3404 "parser.tab.c" /* yacc.c:1651 */
break;
case 136:
-#line 559 "parser.y" /* yacc.c:1648 */
+#line 559 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
-#line 3410 "parser.tab.c" /* yacc.c:1648 */
+#line 3410 "parser.tab.c" /* yacc.c:1651 */
break;
case 137:
-#line 560 "parser.y" /* yacc.c:1648 */
+#line 560 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_OBJECT); }
-#line 3416 "parser.tab.c" /* yacc.c:1648 */
+#line 3416 "parser.tab.c" /* yacc.c:1651 */
break;
case 138:
-#line 561 "parser.y" /* yacc.c:1648 */
+#line 561 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_ODL); }
-#line 3422 "parser.tab.c" /* yacc.c:1648 */
+#line 3422 "parser.tab.c" /* yacc.c:1651 */
break;
case 139:
-#line 562 "parser.y" /* yacc.c:1648 */
+#line 562 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
-#line 3428 "parser.tab.c" /* yacc.c:1648 */
+#line 3428 "parser.tab.c" /* yacc.c:1651 */
break;
case 140:
-#line 563 "parser.y" /* yacc.c:1648 */
+#line 563 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
-#line 3434 "parser.tab.c" /* yacc.c:1648 */
+#line 3434 "parser.tab.c" /* yacc.c:1651 */
break;
case 141:
-#line 564 "parser.y" /* yacc.c:1648 */
+#line 564 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_OPTIONAL); }
-#line 3440 "parser.tab.c" /* yacc.c:1648 */
+#line 3440 "parser.tab.c" /* yacc.c:1651 */
break;
case 142:
-#line 565 "parser.y" /* yacc.c:1648 */
+#line 565 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_OUT); }
-#line 3446 "parser.tab.c" /* yacc.c:1648 */
+#line 3446 "parser.tab.c" /* yacc.c:1651 */
break;
case 143:
-#line 566 "parser.y" /* yacc.c:1648 */
+#line 566 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
-#line 3452 "parser.tab.c" /* yacc.c:1648 */
+#line 3452 "parser.tab.c" /* yacc.c:1651 */
break;
case 144:
-#line 567 "parser.y" /* yacc.c:1648 */
+#line 567 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
-#line 3458 "parser.tab.c" /* yacc.c:1648 */
+#line 3458 "parser.tab.c" /* yacc.c:1651 */
break;
case 145:
-#line 568 "parser.y" /* yacc.c:1648 */
+#line 568 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
-#line 3464 "parser.tab.c" /* yacc.c:1648 */
+#line 3464 "parser.tab.c" /* yacc.c:1651 */
break;
case 146:
-#line 569 "parser.y" /* yacc.c:1648 */
+#line 569 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PROPGET); }
-#line 3470 "parser.tab.c" /* yacc.c:1648 */
+#line 3470 "parser.tab.c" /* yacc.c:1651 */
break;
case 147:
-#line 570 "parser.y" /* yacc.c:1648 */
+#line 570 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PROPPUT); }
-#line 3476 "parser.tab.c" /* yacc.c:1648 */
+#line 3476 "parser.tab.c" /* yacc.c:1651 */
break;
case 148:
-#line 571 "parser.y" /* yacc.c:1648 */
+#line 571 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
-#line 3482 "parser.tab.c" /* yacc.c:1648 */
+#line 3482 "parser.tab.c" /* yacc.c:1651 */
break;
case 149:
-#line 572 "parser.y" /* yacc.c:1648 */
+#line 572 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PROXY); }
-#line 3488 "parser.tab.c" /* yacc.c:1648 */
+#line 3488 "parser.tab.c" /* yacc.c:1651 */
break;
case 150:
-#line 573 "parser.y" /* yacc.c:1648 */
+#line 573 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_PUBLIC); }
-#line 3494 "parser.tab.c" /* yacc.c:1648 */
+#line 3494 "parser.tab.c" /* yacc.c:1651 */
break;
case 151:
-#line 575 "parser.y" /* yacc.c:1648 */
+#line 575 "parser.y" /* yacc.c:1651 */
{ expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
list = append_expr( list, (yyvsp[-1].expr) );
(yyval.attr) = make_attrp(ATTR_RANGE, list); }
-#line 3502 "parser.tab.c" /* yacc.c:1648 */
+#line 3502 "parser.tab.c" /* yacc.c:1651 */
break;
case 152:
-#line 578 "parser.y" /* yacc.c:1648 */
+#line 578 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_READONLY); }
-#line 3508 "parser.tab.c" /* yacc.c:1648 */
+#line 3508 "parser.tab.c" /* yacc.c:1651 */
break;
case 153:
-#line 579 "parser.y" /* yacc.c:1648 */
+#line 579 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
-#line 3514 "parser.tab.c" /* yacc.c:1648 */
+#line 3514 "parser.tab.c" /* yacc.c:1651 */
break;
case 154:
-#line 580 "parser.y" /* yacc.c:1648 */
+#line 580 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
-#line 3520 "parser.tab.c" /* yacc.c:1648 */
+#line 3520 "parser.tab.c" /* yacc.c:1651 */
break;
case 155:
-#line 581 "parser.y" /* yacc.c:1648 */
+#line 581 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_RESTRICTED); }
-#line 3526 "parser.tab.c" /* yacc.c:1648 */
+#line 3526 "parser.tab.c" /* yacc.c:1651 */
break;
case 156:
-#line 582 "parser.y" /* yacc.c:1648 */
+#line 582 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_RETVAL); }
-#line 3532 "parser.tab.c" /* yacc.c:1648 */
+#line 3532 "parser.tab.c" /* yacc.c:1651 */
break;
case 157:
-#line 583 "parser.y" /* yacc.c:1648 */
+#line 583 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
-#line 3538 "parser.tab.c" /* yacc.c:1648 */
+#line 3538 "parser.tab.c" /* yacc.c:1651 */
break;
case 158:
-#line 584 "parser.y" /* yacc.c:1648 */
+#line 584 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_SOURCE); }
-#line 3544 "parser.tab.c" /* yacc.c:1648 */
+#line 3544 "parser.tab.c" /* yacc.c:1651 */
break;
case 159:
-#line 585 "parser.y" /* yacc.c:1648 */
+#line 585 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
-#line 3550 "parser.tab.c" /* yacc.c:1648 */
+#line 3550 "parser.tab.c" /* yacc.c:1651 */
break;
case 160:
-#line 586 "parser.y" /* yacc.c:1648 */
+#line 586 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_STRING); }
-#line 3556 "parser.tab.c" /* yacc.c:1648 */
+#line 3556 "parser.tab.c" /* yacc.c:1651 */
break;
case 161:
-#line 587 "parser.y" /* yacc.c:1648 */
+#line 587 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
-#line 3562 "parser.tab.c" /* yacc.c:1648 */
+#line 3562 "parser.tab.c" /* yacc.c:1651 */
break;
case 162:
-#line 588 "parser.y" /* yacc.c:1648 */
+#line 588 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
-#line 3568 "parser.tab.c" /* yacc.c:1648 */
+#line 3568 "parser.tab.c" /* yacc.c:1651 */
break;
case 163:
-#line 589 "parser.y" /* yacc.c:1648 */
+#line 589 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
-#line 3574 "parser.tab.c" /* yacc.c:1648 */
+#line 3574 "parser.tab.c" /* yacc.c:1651 */
break;
case 164:
-#line 590 "parser.y" /* yacc.c:1648 */
+#line 590 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
-#line 3580 "parser.tab.c" /* yacc.c:1648 */
+#line 3580 "parser.tab.c" /* yacc.c:1651 */
break;
case 165:
-#line 591 "parser.y" /* yacc.c:1648 */
+#line 591 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
-#line 3586 "parser.tab.c" /* yacc.c:1648 */
+#line 3586 "parser.tab.c" /* yacc.c:1651 */
break;
case 166:
-#line 592 "parser.y" /* yacc.c:1648 */
+#line 592 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
-#line 3592 "parser.tab.c" /* yacc.c:1648 */
+#line 3592 "parser.tab.c" /* yacc.c:1651 */
break;
case 167:
-#line 593 "parser.y" /* yacc.c:1648 */
+#line 593 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
-#line 3598 "parser.tab.c" /* yacc.c:1648 */
+#line 3598 "parser.tab.c" /* yacc.c:1651 */
break;
case 168:
-#line 594 "parser.y" /* yacc.c:1648 */
+#line 594 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
-#line 3604 "parser.tab.c" /* yacc.c:1648 */
+#line 3604 "parser.tab.c" /* yacc.c:1651 */
break;
case 169:
-#line 595 "parser.y" /* yacc.c:1648 */
+#line 595 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
-#line 3610 "parser.tab.c" /* yacc.c:1648 */
+#line 3610 "parser.tab.c" /* yacc.c:1651 */
break;
case 170:
-#line 596 "parser.y" /* yacc.c:1648 */
+#line 596 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_V1ENUM); }
-#line 3616 "parser.tab.c" /* yacc.c:1648 */
+#line 3616 "parser.tab.c" /* yacc.c:1651 */
break;
case 171:
-#line 597 "parser.y" /* yacc.c:1648 */
+#line 597 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_VARARG); }
-#line 3622 "parser.tab.c" /* yacc.c:1648 */
+#line 3622 "parser.tab.c" /* yacc.c:1651 */
break;
case 172:
-#line 598 "parser.y" /* yacc.c:1648 */
+#line 598 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
-#line 3628 "parser.tab.c" /* yacc.c:1648 */
+#line 3628 "parser.tab.c" /* yacc.c:1651 */
break;
case 173:
-#line 599 "parser.y" /* yacc.c:1648 */
+#line 599 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
-#line 3634 "parser.tab.c" /* yacc.c:1648 */
+#line 3634 "parser.tab.c" /* yacc.c:1651 */
break;
case 174:
-#line 600 "parser.y" /* yacc.c:1648 */
+#line 600 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
-#line 3640 "parser.tab.c" /* yacc.c:1648 */
+#line 3640 "parser.tab.c" /* yacc.c:1651 */
break;
case 175:
-#line 601 "parser.y" /* yacc.c:1648 */
+#line 601 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
-#line 3646 "parser.tab.c" /* yacc.c:1648 */
+#line 3646 "parser.tab.c" /* yacc.c:1651 */
break;
case 177:
-#line 606 "parser.y" /* yacc.c:1648 */
+#line 606 "parser.y" /* yacc.c:1651 */
{ if (!is_valid_uuid((yyvsp[0].str)))
error_loc("invalid UUID: %s\n", (yyvsp[0].str));
(yyval.uuid) = parse_uuid((yyvsp[0].str)); }
-#line 3654 "parser.tab.c" /* yacc.c:1648 */
+#line 3654 "parser.tab.c" /* yacc.c:1651 */
break;
case 178:
-#line 611 "parser.y" /* yacc.c:1648 */
+#line 611 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = xstrdup("__cdecl"); }
-#line 3660 "parser.tab.c" /* yacc.c:1648 */
+#line 3660 "parser.tab.c" /* yacc.c:1651 */
break;
case 179:
-#line 612 "parser.y" /* yacc.c:1648 */
+#line 612 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = xstrdup("__fastcall"); }
-#line 3666 "parser.tab.c" /* yacc.c:1648 */
+#line 3666 "parser.tab.c" /* yacc.c:1651 */
break;
case 180:
-#line 613 "parser.y" /* yacc.c:1648 */
+#line 613 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = xstrdup("__pascal"); }
-#line 3672 "parser.tab.c" /* yacc.c:1648 */
+#line 3672 "parser.tab.c" /* yacc.c:1651 */
break;
case 181:
-#line 614 "parser.y" /* yacc.c:1648 */
+#line 614 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = xstrdup("__stdcall"); }
-#line 3678 "parser.tab.c" /* yacc.c:1648 */
+#line 3678 "parser.tab.c" /* yacc.c:1651 */
break;
case 182:
-#line 617 "parser.y" /* yacc.c:1648 */
+#line 617 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 3684 "parser.tab.c" /* yacc.c:1648 */
+#line 3684 "parser.tab.c" /* yacc.c:1651 */
break;
case 183:
-#line 618 "parser.y" /* yacc.c:1648 */
+#line 618 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 3690 "parser.tab.c" /* yacc.c:1648 */
+#line 3690 "parser.tab.c" /* yacc.c:1651 */
break;
case 184:
-#line 621 "parser.y" /* yacc.c:1648 */
+#line 621 "parser.y" /* yacc.c:1651 */
{ attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ));
(yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
(yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
}
-#line 3699 "parser.tab.c" /* yacc.c:1648 */
+#line 3699 "parser.tab.c" /* yacc.c:1651 */
break;
case 185:
-#line 625 "parser.y" /* yacc.c:1648 */
+#line 625 "parser.y" /* yacc.c:1651 */
{ attr_t *a = make_attr(ATTR_DEFAULT);
(yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
(yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
}
-#line 3708 "parser.tab.c" /* yacc.c:1648 */
+#line 3708 "parser.tab.c" /* yacc.c:1651 */
break;
case 186:
-#line 631 "parser.y" /* yacc.c:1648 */
+#line 631 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 3714 "parser.tab.c" /* yacc.c:1648 */
+#line 3714 "parser.tab.c" /* yacc.c:1651 */
break;
case 187:
-#line 632 "parser.y" /* yacc.c:1648 */
+#line 632 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = (yyvsp[-1].var_list); }
-#line 3720 "parser.tab.c" /* yacc.c:1648 */
+#line 3720 "parser.tab.c" /* yacc.c:1651 */
break;
case 189:
-#line 636 "parser.y" /* yacc.c:1648 */
+#line 636 "parser.y" /* yacc.c:1651 */
{ if (!(yyvsp[0].var)->eval)
(yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
(yyval.var_list) = append_var( NULL, (yyvsp[0].var) );
}
-#line 3729 "parser.tab.c" /* yacc.c:1648 */
+#line 3729 "parser.tab.c" /* yacc.c:1651 */
break;
case 190:
-#line 640 "parser.y" /* yacc.c:1648 */
+#line 640 "parser.y" /* yacc.c:1651 */
{ if (!(yyvsp[0].var)->eval)
{
var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
@@ -3740,656 +3740,656 @@
}
(yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) );
}
-#line 3744 "parser.tab.c" /* yacc.c:1648 */
+#line 3744 "parser.tab.c" /* yacc.c:1651 */
break;
case 191:
-#line 652 "parser.y" /* yacc.c:1648 */
+#line 652 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = reg_const((yyvsp[-2].var));
(yyval.var)->eval = (yyvsp[0].expr);
(yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
}
-#line 3753 "parser.tab.c" /* yacc.c:1648 */
+#line 3753 "parser.tab.c" /* yacc.c:1651 */
break;
case 192:
-#line 656 "parser.y" /* yacc.c:1648 */
+#line 656 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = reg_const((yyvsp[0].var));
(yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
}
-#line 3761 "parser.tab.c" /* yacc.c:1648 */
+#line 3761 "parser.tab.c" /* yacc.c:1651 */
break;
case 193:
-#line 661 "parser.y" /* yacc.c:1648 */
+#line 661 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 3767 "parser.tab.c" /* yacc.c:1648 */
+#line 3767 "parser.tab.c" /* yacc.c:1651 */
break;
case 194:
-#line 664 "parser.y" /* yacc.c:1648 */
+#line 664 "parser.y" /* yacc.c:1651 */
{ (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 3773 "parser.tab.c" /* yacc.c:1648 */
+#line 3773 "parser.tab.c" /* yacc.c:1651 */
break;
case 195:
-#line 665 "parser.y" /* yacc.c:1648 */
+#line 665 "parser.y" /* yacc.c:1651 */
{ (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 3779 "parser.tab.c" /* yacc.c:1648 */
+#line 3779 "parser.tab.c" /* yacc.c:1651 */
break;
case 196:
-#line 668 "parser.y" /* yacc.c:1648 */
+#line 668 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr(EXPR_VOID); }
-#line 3785 "parser.tab.c" /* yacc.c:1648 */
+#line 3785 "parser.tab.c" /* yacc.c:1651 */
break;
case 198:
-#line 672 "parser.y" /* yacc.c:1648 */
+#line 672 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
-#line 3791 "parser.tab.c" /* yacc.c:1648 */
+#line 3791 "parser.tab.c" /* yacc.c:1651 */
break;
case 199:
-#line 673 "parser.y" /* yacc.c:1648 */
+#line 673 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
-#line 3797 "parser.tab.c" /* yacc.c:1648 */
+#line 3797 "parser.tab.c" /* yacc.c:1651 */
break;
case 200:
-#line 674 "parser.y" /* yacc.c:1648 */
+#line 674 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
-#line 3803 "parser.tab.c" /* yacc.c:1648 */
+#line 3803 "parser.tab.c" /* yacc.c:1651 */
break;
case 201:
-#line 675 "parser.y" /* yacc.c:1648 */
+#line 675 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
-#line 3809 "parser.tab.c" /* yacc.c:1648 */
+#line 3809 "parser.tab.c" /* yacc.c:1651 */
break;
case 202:
-#line 676 "parser.y" /* yacc.c:1648 */
+#line 676 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprl(EXPR_NUM, 0); }
-#line 3815 "parser.tab.c" /* yacc.c:1648 */
+#line 3815 "parser.tab.c" /* yacc.c:1651 */
break;
case 203:
-#line 677 "parser.y" /* yacc.c:1648 */
+#line 677 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
-#line 3821 "parser.tab.c" /* yacc.c:1648 */
+#line 3821 "parser.tab.c" /* yacc.c:1651 */
break;
case 204:
-#line 678 "parser.y" /* yacc.c:1648 */
+#line 678 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
-#line 3827 "parser.tab.c" /* yacc.c:1648 */
+#line 3827 "parser.tab.c" /* yacc.c:1651 */
break;
case 205:
-#line 679 "parser.y" /* yacc.c:1648 */
+#line 679 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
-#line 3833 "parser.tab.c" /* yacc.c:1648 */
+#line 3833 "parser.tab.c" /* yacc.c:1651 */
break;
case 206:
-#line 680 "parser.y" /* yacc.c:1648 */
+#line 680 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
-#line 3839 "parser.tab.c" /* yacc.c:1648 */
+#line 3839 "parser.tab.c" /* yacc.c:1651 */
break;
case 207:
-#line 681 "parser.y" /* yacc.c:1648 */
+#line 681 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
-#line 3845 "parser.tab.c" /* yacc.c:1648 */
+#line 3845 "parser.tab.c" /* yacc.c:1651 */
break;
case 208:
-#line 682 "parser.y" /* yacc.c:1648 */
+#line 682 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3851 "parser.tab.c" /* yacc.c:1648 */
+#line 3851 "parser.tab.c" /* yacc.c:1651 */
break;
case 209:
-#line 683 "parser.y" /* yacc.c:1648 */
+#line 683 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3857 "parser.tab.c" /* yacc.c:1648 */
+#line 3857 "parser.tab.c" /* yacc.c:1651 */
break;
case 210:
-#line 684 "parser.y" /* yacc.c:1648 */
+#line 684 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3863 "parser.tab.c" /* yacc.c:1648 */
+#line 3863 "parser.tab.c" /* yacc.c:1651 */
break;
case 211:
-#line 685 "parser.y" /* yacc.c:1648 */
+#line 685 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3869 "parser.tab.c" /* yacc.c:1648 */
+#line 3869 "parser.tab.c" /* yacc.c:1651 */
break;
case 212:
-#line 686 "parser.y" /* yacc.c:1648 */
+#line 686 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3875 "parser.tab.c" /* yacc.c:1648 */
+#line 3875 "parser.tab.c" /* yacc.c:1651 */
break;
case 213:
-#line 687 "parser.y" /* yacc.c:1648 */
+#line 687 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3881 "parser.tab.c" /* yacc.c:1648 */
+#line 3881 "parser.tab.c" /* yacc.c:1651 */
break;
case 214:
-#line 688 "parser.y" /* yacc.c:1648 */
+#line 688 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3887 "parser.tab.c" /* yacc.c:1648 */
+#line 3887 "parser.tab.c" /* yacc.c:1651 */
break;
case 215:
-#line 689 "parser.y" /* yacc.c:1648 */
+#line 689 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3893 "parser.tab.c" /* yacc.c:1648 */
+#line 3893 "parser.tab.c" /* yacc.c:1651 */
break;
case 216:
-#line 690 "parser.y" /* yacc.c:1648 */
+#line 690 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3899 "parser.tab.c" /* yacc.c:1648 */
+#line 3899 "parser.tab.c" /* yacc.c:1651 */
break;
case 217:
-#line 691 "parser.y" /* yacc.c:1648 */
+#line 691 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3905 "parser.tab.c" /* yacc.c:1648 */
+#line 3905 "parser.tab.c" /* yacc.c:1651 */
break;
case 218:
-#line 692 "parser.y" /* yacc.c:1648 */
+#line 692 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3911 "parser.tab.c" /* yacc.c:1648 */
+#line 3911 "parser.tab.c" /* yacc.c:1651 */
break;
case 219:
-#line 693 "parser.y" /* yacc.c:1648 */
+#line 693 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3917 "parser.tab.c" /* yacc.c:1648 */
+#line 3917 "parser.tab.c" /* yacc.c:1651 */
break;
case 220:
-#line 694 "parser.y" /* yacc.c:1648 */
+#line 694 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3923 "parser.tab.c" /* yacc.c:1648 */
+#line 3923 "parser.tab.c" /* yacc.c:1651 */
break;
case 221:
-#line 695 "parser.y" /* yacc.c:1648 */
+#line 695 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3929 "parser.tab.c" /* yacc.c:1648 */
+#line 3929 "parser.tab.c" /* yacc.c:1651 */
break;
case 222:
-#line 696 "parser.y" /* yacc.c:1648 */
+#line 696 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3935 "parser.tab.c" /* yacc.c:1648 */
+#line 3935 "parser.tab.c" /* yacc.c:1651 */
break;
case 223:
-#line 697 "parser.y" /* yacc.c:1648 */
+#line 697 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3941 "parser.tab.c" /* yacc.c:1648 */
+#line 3941 "parser.tab.c" /* yacc.c:1651 */
break;
case 224:
-#line 698 "parser.y" /* yacc.c:1648 */
+#line 698 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3947 "parser.tab.c" /* yacc.c:1648 */
+#line 3947 "parser.tab.c" /* yacc.c:1651 */
break;
case 225:
-#line 699 "parser.y" /* yacc.c:1648 */
+#line 699 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3953 "parser.tab.c" /* yacc.c:1648 */
+#line 3953 "parser.tab.c" /* yacc.c:1651 */
break;
case 226:
-#line 700 "parser.y" /* yacc.c:1648 */
+#line 700 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3959 "parser.tab.c" /* yacc.c:1648 */
+#line 3959 "parser.tab.c" /* yacc.c:1651 */
break;
case 227:
-#line 701 "parser.y" /* yacc.c:1648 */
+#line 701 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
-#line 3965 "parser.tab.c" /* yacc.c:1648 */
+#line 3965 "parser.tab.c" /* yacc.c:1651 */
break;
case 228:
-#line 702 "parser.y" /* yacc.c:1648 */
+#line 702 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
-#line 3971 "parser.tab.c" /* yacc.c:1648 */
+#line 3971 "parser.tab.c" /* yacc.c:1651 */
break;
case 229:
-#line 703 "parser.y" /* yacc.c:1648 */
+#line 703 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
-#line 3977 "parser.tab.c" /* yacc.c:1648 */
+#line 3977 "parser.tab.c" /* yacc.c:1651 */
break;
case 230:
-#line 704 "parser.y" /* yacc.c:1648 */
+#line 704 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
-#line 3983 "parser.tab.c" /* yacc.c:1648 */
+#line 3983 "parser.tab.c" /* yacc.c:1651 */
break;
case 231:
-#line 705 "parser.y" /* yacc.c:1648 */
+#line 705 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
-#line 3989 "parser.tab.c" /* yacc.c:1648 */
+#line 3989 "parser.tab.c" /* yacc.c:1651 */
break;
case 232:
-#line 706 "parser.y" /* yacc.c:1648 */
+#line 706 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
-#line 3995 "parser.tab.c" /* yacc.c:1648 */
+#line 3995 "parser.tab.c" /* yacc.c:1651 */
break;
case 233:
-#line 707 "parser.y" /* yacc.c:1648 */
+#line 707 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 4001 "parser.tab.c" /* yacc.c:1648 */
+#line 4001 "parser.tab.c" /* yacc.c:1651 */
break;
case 234:
-#line 708 "parser.y" /* yacc.c:1648 */
+#line 708 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 4007 "parser.tab.c" /* yacc.c:1648 */
+#line 4007 "parser.tab.c" /* yacc.c:1651 */
break;
case 235:
-#line 710 "parser.y" /* yacc.c:1648 */
+#line 710 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
-#line 4013 "parser.tab.c" /* yacc.c:1648 */
+#line 4013 "parser.tab.c" /* yacc.c:1651 */
break;
case 236:
-#line 712 "parser.y" /* yacc.c:1648 */
+#line 712 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
-#line 4019 "parser.tab.c" /* yacc.c:1648 */
+#line 4019 "parser.tab.c" /* yacc.c:1651 */
break;
case 237:
-#line 713 "parser.y" /* yacc.c:1648 */
+#line 713 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
-#line 4025 "parser.tab.c" /* yacc.c:1648 */
+#line 4025 "parser.tab.c" /* yacc.c:1651 */
break;
case 238:
-#line 714 "parser.y" /* yacc.c:1648 */
+#line 714 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = (yyvsp[-1].expr); }
-#line 4031 "parser.tab.c" /* yacc.c:1648 */
+#line 4031 "parser.tab.c" /* yacc.c:1651 */
break;
case 239:
-#line 717 "parser.y" /* yacc.c:1648 */
+#line 717 "parser.y" /* yacc.c:1651 */
{ (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 4037 "parser.tab.c" /* yacc.c:1648 */
+#line 4037 "parser.tab.c" /* yacc.c:1651 */
break;
case 240:
-#line 718 "parser.y" /* yacc.c:1648 */
+#line 718 "parser.y" /* yacc.c:1651 */
{ (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 4043 "parser.tab.c" /* yacc.c:1648 */
+#line 4043 "parser.tab.c" /* yacc.c:1651 */
break;
case 241:
-#line 721 "parser.y" /* yacc.c:1648 */
+#line 721 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = (yyvsp[0].expr);
if (!(yyval.expr)->is_const)
error_loc("expression is not an integer constant\n");
}
-#line 4052 "parser.tab.c" /* yacc.c:1648 */
+#line 4052 "parser.tab.c" /* yacc.c:1651 */
break;
case 242:
-#line 727 "parser.y" /* yacc.c:1648 */
+#line 727 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = (yyvsp[0].expr);
if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
error_loc("expression is not constant\n");
}
-#line 4061 "parser.tab.c" /* yacc.c:1648 */
+#line 4061 "parser.tab.c" /* yacc.c:1651 */
break;
case 243:
-#line 733 "parser.y" /* yacc.c:1648 */
+#line 733 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 4067 "parser.tab.c" /* yacc.c:1648 */
+#line 4067 "parser.tab.c" /* yacc.c:1651 */
break;
case 244:
-#line 734 "parser.y" /* yacc.c:1648 */
+#line 734 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
-#line 4073 "parser.tab.c" /* yacc.c:1648 */
+#line 4073 "parser.tab.c" /* yacc.c:1651 */
break;
case 245:
-#line 738 "parser.y" /* yacc.c:1648 */
+#line 738 "parser.y" /* yacc.c:1651 */
{ const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
check_field_attrs(first, (yyvsp[-3].attr_list));
(yyval.var_list) = set_var_types((yyvsp[-3].attr_list), (yyvsp[-2].declspec), (yyvsp[-1].declarator_list));
}
-#line 4082 "parser.tab.c" /* yacc.c:1648 */
+#line 4082 "parser.tab.c" /* yacc.c:1651 */
break;
case 246:
-#line 742 "parser.y" /* yacc.c:1648 */
+#line 742 "parser.y" /* yacc.c:1651 */
{ var_t *v = make_var(NULL);
v->type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list);
(yyval.var_list) = append_var(NULL, v);
}
-#line 4091 "parser.tab.c" /* yacc.c:1648 */
+#line 4091 "parser.tab.c" /* yacc.c:1651 */
break;
case 247:
-#line 749 "parser.y" /* yacc.c:1648 */
+#line 749 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = (yyvsp[-1].var); }
-#line 4097 "parser.tab.c" /* yacc.c:1648 */
+#line 4097 "parser.tab.c" /* yacc.c:1651 */
break;
case 248:
-#line 750 "parser.y" /* yacc.c:1648 */
+#line 750 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
-#line 4103 "parser.tab.c" /* yacc.c:1648 */
+#line 4103 "parser.tab.c" /* yacc.c:1651 */
break;
case 249:
-#line 753 "parser.y" /* yacc.c:1648 */
+#line 753 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 4109 "parser.tab.c" /* yacc.c:1648 */
+#line 4109 "parser.tab.c" /* yacc.c:1651 */
break;
case 250:
-#line 754 "parser.y" /* yacc.c:1648 */
+#line 754 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 4115 "parser.tab.c" /* yacc.c:1648 */
+#line 4115 "parser.tab.c" /* yacc.c:1651 */
break;
case 251:
-#line 758 "parser.y" /* yacc.c:1648 */
+#line 758 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = (yyvsp[-1].var); }
-#line 4121 "parser.tab.c" /* yacc.c:1648 */
+#line 4121 "parser.tab.c" /* yacc.c:1651 */
break;
case 252:
-#line 759 "parser.y" /* yacc.c:1648 */
+#line 759 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = NULL; }
-#line 4127 "parser.tab.c" /* yacc.c:1648 */
+#line 4127 "parser.tab.c" /* yacc.c:1651 */
break;
case 253:
-#line 762 "parser.y" /* yacc.c:1648 */
+#line 762 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
(yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
free((yyvsp[0].declarator));
}
-#line 4136 "parser.tab.c" /* yacc.c:1648 */
+#line 4136 "parser.tab.c" /* yacc.c:1651 */
break;
case 254:
-#line 766 "parser.y" /* yacc.c:1648 */
+#line 766 "parser.y" /* yacc.c:1651 */
{ var_t *v = make_var(NULL);
v->type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
(yyval.var) = v;
}
-#line 4145 "parser.tab.c" /* yacc.c:1648 */
+#line 4145 "parser.tab.c" /* yacc.c:1651 */
break;
case 255:
-#line 772 "parser.y" /* yacc.c:1648 */
+#line 772 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = (yyvsp[0].var);
if (type_get_type((yyval.var)->type) != TYPE_FUNCTION)
error_loc("only methods may be declared inside the methods section of a dispinterface\n");
check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
}
-#line 4155 "parser.tab.c" /* yacc.c:1648 */
+#line 4155 "parser.tab.c" /* yacc.c:1651 */
break;
case 256:
-#line 781 "parser.y" /* yacc.c:1648 */
+#line 781 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
free((yyvsp[0].declarator));
}
-#line 4163 "parser.tab.c" /* yacc.c:1648 */
+#line 4163 "parser.tab.c" /* yacc.c:1651 */
break;
case 257:
-#line 784 "parser.y" /* yacc.c:1648 */
+#line 784 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
free((yyvsp[0].declarator));
}
-#line 4171 "parser.tab.c" /* yacc.c:1648 */
+#line 4171 "parser.tab.c" /* yacc.c:1651 */
break;
case 258:
-#line 789 "parser.y" /* yacc.c:1648 */
+#line 789 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = NULL; }
-#line 4177 "parser.tab.c" /* yacc.c:1648 */
+#line 4177 "parser.tab.c" /* yacc.c:1651 */
break;
case 260:
-#line 793 "parser.y" /* yacc.c:1648 */
+#line 793 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = NULL; }
-#line 4183 "parser.tab.c" /* yacc.c:1648 */
+#line 4183 "parser.tab.c" /* yacc.c:1651 */
break;
case 261:
-#line 794 "parser.y" /* yacc.c:1648 */
+#line 794 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[0].str); }
-#line 4189 "parser.tab.c" /* yacc.c:1648 */
+#line 4189 "parser.tab.c" /* yacc.c:1651 */
break;
case 262:
-#line 795 "parser.y" /* yacc.c:1648 */
+#line 795 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[0].str); }
-#line 4195 "parser.tab.c" /* yacc.c:1648 */
+#line 4195 "parser.tab.c" /* yacc.c:1651 */
break;
case 263:
-#line 798 "parser.y" /* yacc.c:1648 */
+#line 798 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4201 "parser.tab.c" /* yacc.c:1648 */
+#line 4201 "parser.tab.c" /* yacc.c:1651 */
break;
case 264:
-#line 800 "parser.y" /* yacc.c:1648 */
+#line 800 "parser.y" /* yacc.c:1651 */
{ (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4207 "parser.tab.c" /* yacc.c:1648 */
+#line 4207 "parser.tab.c" /* yacc.c:1651 */
break;
case 265:
-#line 803 "parser.y" /* yacc.c:1648 */
+#line 803 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4213 "parser.tab.c" /* yacc.c:1648 */
+#line 4213 "parser.tab.c" /* yacc.c:1651 */
break;
case 266:
-#line 804 "parser.y" /* yacc.c:1648 */
+#line 804 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4219 "parser.tab.c" /* yacc.c:1648 */
+#line 4219 "parser.tab.c" /* yacc.c:1651 */
break;
case 268:
-#line 806 "parser.y" /* yacc.c:1648 */
+#line 806 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
-#line 4225 "parser.tab.c" /* yacc.c:1648 */
+#line 4225 "parser.tab.c" /* yacc.c:1651 */
break;
case 269:
-#line 807 "parser.y" /* yacc.c:1648 */
+#line 807 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
-#line 4231 "parser.tab.c" /* yacc.c:1648 */
+#line 4231 "parser.tab.c" /* yacc.c:1651 */
break;
case 270:
-#line 808 "parser.y" /* yacc.c:1648 */
+#line 808 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
-#line 4237 "parser.tab.c" /* yacc.c:1648 */
+#line 4237 "parser.tab.c" /* yacc.c:1651 */
break;
case 271:
-#line 809 "parser.y" /* yacc.c:1648 */
+#line 809 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4243 "parser.tab.c" /* yacc.c:1648 */
+#line 4243 "parser.tab.c" /* yacc.c:1651 */
break;
case 272:
-#line 810 "parser.y" /* yacc.c:1648 */
+#line 810 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4249 "parser.tab.c" /* yacc.c:1648 */
+#line 4249 "parser.tab.c" /* yacc.c:1651 */
break;
case 273:
-#line 811 "parser.y" /* yacc.c:1648 */
+#line 811 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4255 "parser.tab.c" /* yacc.c:1648 */
+#line 4255 "parser.tab.c" /* yacc.c:1651 */
break;
case 274:
-#line 812 "parser.y" /* yacc.c:1648 */
+#line 812 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4261 "parser.tab.c" /* yacc.c:1648 */
+#line 4261 "parser.tab.c" /* yacc.c:1651 */
break;
case 275:
-#line 813 "parser.y" /* yacc.c:1648 */
+#line 813 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4267 "parser.tab.c" /* yacc.c:1648 */
+#line 4267 "parser.tab.c" /* yacc.c:1651 */
break;
case 278:
-#line 820 "parser.y" /* yacc.c:1648 */
+#line 820 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
-#line 4273 "parser.tab.c" /* yacc.c:1648 */
+#line 4273 "parser.tab.c" /* yacc.c:1651 */
break;
case 279:
-#line 821 "parser.y" /* yacc.c:1648 */
+#line 821 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
-#line 4279 "parser.tab.c" /* yacc.c:1648 */
+#line 4279 "parser.tab.c" /* yacc.c:1651 */
break;
case 280:
-#line 822 "parser.y" /* yacc.c:1648 */
+#line 822 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
-#line 4285 "parser.tab.c" /* yacc.c:1648 */
+#line 4285 "parser.tab.c" /* yacc.c:1651 */
break;
case 281:
-#line 823 "parser.y" /* yacc.c:1648 */
+#line 823 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
-#line 4291 "parser.tab.c" /* yacc.c:1648 */
+#line 4291 "parser.tab.c" /* yacc.c:1651 */
break;
case 282:
-#line 824 "parser.y" /* yacc.c:1648 */
+#line 824 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
-#line 4297 "parser.tab.c" /* yacc.c:1648 */
+#line 4297 "parser.tab.c" /* yacc.c:1651 */
break;
case 283:
-#line 825 "parser.y" /* yacc.c:1648 */
+#line 825 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
-#line 4303 "parser.tab.c" /* yacc.c:1648 */
+#line 4303 "parser.tab.c" /* yacc.c:1651 */
break;
case 284:
-#line 826 "parser.y" /* yacc.c:1648 */
+#line 826 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
-#line 4309 "parser.tab.c" /* yacc.c:1648 */
+#line 4309 "parser.tab.c" /* yacc.c:1651 */
break;
case 285:
-#line 827 "parser.y" /* yacc.c:1648 */
+#line 827 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
-#line 4315 "parser.tab.c" /* yacc.c:1648 */
+#line 4315 "parser.tab.c" /* yacc.c:1651 */
break;
case 286:
-#line 828 "parser.y" /* yacc.c:1648 */
+#line 828 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
-#line 4321 "parser.tab.c" /* yacc.c:1648 */
+#line 4321 "parser.tab.c" /* yacc.c:1651 */
break;
case 287:
-#line 831 "parser.y" /* yacc.c:1648 */
+#line 831 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_coclass((yyvsp[0].str)); }
-#line 4327 "parser.tab.c" /* yacc.c:1648 */
+#line 4327 "parser.tab.c" /* yacc.c:1651 */
break;
case 288:
-#line 832 "parser.y" /* yacc.c:1648 */
+#line 832 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type((yyvsp[0].str), NULL, 0);
if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
error_loc("%s was not declared a coclass at %s:%d\n",
(yyvsp[0].str), (yyval.type)->loc_info.input_name,
(yyval.type)->loc_info.line_number);
}
-#line 4338 "parser.tab.c" /* yacc.c:1648 */
+#line 4338 "parser.tab.c" /* yacc.c:1651 */
break;
case 289:
-#line 840 "parser.y" /* yacc.c:1648 */
+#line 840 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type);
check_def((yyval.type));
(yyval.type)->attrs = check_coclass_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
}
-#line 4347 "parser.tab.c" /* yacc.c:1648 */
+#line 4347 "parser.tab.c" /* yacc.c:1651 */
break;
case 290:
-#line 847 "parser.y" /* yacc.c:1648 */
+#line 847 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
-#line 4353 "parser.tab.c" /* yacc.c:1648 */
+#line 4353 "parser.tab.c" /* yacc.c:1651 */
break;
case 291:
-#line 850 "parser.y" /* yacc.c:1648 */
+#line 850 "parser.y" /* yacc.c:1651 */
{ (yyval.str) = (yyvsp[0].str); }
-#line 4359 "parser.tab.c" /* yacc.c:1648 */
+#line 4359 "parser.tab.c" /* yacc.c:1651 */
break;
case 292:
-#line 853 "parser.y" /* yacc.c:1648 */
+#line 853 "parser.y" /* yacc.c:1651 */
{ (yyval.ifref_list) = NULL; }
-#line 4365 "parser.tab.c" /* yacc.c:1648 */
+#line 4365 "parser.tab.c" /* yacc.c:1651 */
break;
case 293:
-#line 854 "parser.y" /* yacc.c:1648 */
+#line 854 "parser.y" /* yacc.c:1651 */
{ (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
-#line 4371 "parser.tab.c" /* yacc.c:1648 */
+#line 4371 "parser.tab.c" /* yacc.c:1651 */
break;
case 294:
-#line 858 "parser.y" /* yacc.c:1648 */
+#line 858 "parser.y" /* yacc.c:1651 */
{ (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
-#line 4377 "parser.tab.c" /* yacc.c:1648 */
+#line 4377 "parser.tab.c" /* yacc.c:1651 */
break;
case 295:
-#line 861 "parser.y" /* yacc.c:1648 */
+#line 861 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4383 "parser.tab.c" /* yacc.c:1648 */
+#line 4383 "parser.tab.c" /* yacc.c:1651 */
break;
case 296:
-#line 862 "parser.y" /* yacc.c:1648 */
+#line 862 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4389 "parser.tab.c" /* yacc.c:1648 */
+#line 4389 "parser.tab.c" /* yacc.c:1651 */
break;
case 297:
-#line 865 "parser.y" /* yacc.c:1648 */
+#line 865 "parser.y" /* yacc.c:1651 */
{ attr_t *attrs;
(yyval.type) = (yyvsp[0].type);
check_def((yyval.type));
@@ -4397,75 +4397,75 @@
(yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list)), attrs );
(yyval.type)->defined = TRUE;
}
-#line 4401 "parser.tab.c" /* yacc.c:1648 */
+#line 4401 "parser.tab.c" /* yacc.c:1651 */
break;
case 298:
-#line 874 "parser.y" /* yacc.c:1648 */
+#line 874 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 4407 "parser.tab.c" /* yacc.c:1648 */
+#line 4407 "parser.tab.c" /* yacc.c:1651 */
break;
case 299:
-#line 875 "parser.y" /* yacc.c:1648 */
+#line 875 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4413 "parser.tab.c" /* yacc.c:1648 */
+#line 4413 "parser.tab.c" /* yacc.c:1651 */
break;
case 300:
-#line 878 "parser.y" /* yacc.c:1648 */
+#line 878 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = NULL; }
-#line 4419 "parser.tab.c" /* yacc.c:1648 */
+#line 4419 "parser.tab.c" /* yacc.c:1651 */
break;
case 301:
-#line 879 "parser.y" /* yacc.c:1648 */
+#line 879 "parser.y" /* yacc.c:1651 */
{ (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4425 "parser.tab.c" /* yacc.c:1648 */
+#line 4425 "parser.tab.c" /* yacc.c:1651 */
break;
case 302:
-#line 885 "parser.y" /* yacc.c:1648 */
+#line 885 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-4].type);
type_dispinterface_define((yyval.type), (yyvsp[-2].var_list), (yyvsp[-1].var_list));
}
-#line 4433 "parser.tab.c" /* yacc.c:1648 */
+#line 4433 "parser.tab.c" /* yacc.c:1651 */
break;
case 303:
-#line 889 "parser.y" /* yacc.c:1648 */
+#line 889 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-4].type);
type_dispinterface_define_from_iface((yyval.type), (yyvsp[-2].type));
}
-#line 4441 "parser.tab.c" /* yacc.c:1648 */
+#line 4441 "parser.tab.c" /* yacc.c:1651 */
break;
case 304:
-#line 894 "parser.y" /* yacc.c:1648 */
+#line 894 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = NULL; }
-#line 4447 "parser.tab.c" /* yacc.c:1648 */
+#line 4447 "parser.tab.c" /* yacc.c:1651 */
break;
case 305:
-#line 895 "parser.y" /* yacc.c:1648 */
+#line 895 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
-#line 4453 "parser.tab.c" /* yacc.c:1648 */
+#line 4453 "parser.tab.c" /* yacc.c:1651 */
break;
case 306:
-#line 898 "parser.y" /* yacc.c:1648 */
+#line 898 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4459 "parser.tab.c" /* yacc.c:1648 */
+#line 4459 "parser.tab.c" /* yacc.c:1651 */
break;
case 307:
-#line 899 "parser.y" /* yacc.c:1648 */
+#line 899 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4465 "parser.tab.c" /* yacc.c:1648 */
+#line 4465 "parser.tab.c" /* yacc.c:1651 */
break;
case 308:
-#line 902 "parser.y" /* yacc.c:1648 */
+#line 902 "parser.y" /* yacc.c:1651 */
{ (yyval.ifinfo).interface = (yyvsp[0].type);
(yyval.ifinfo).old_pointer_default = pointer_default;
if (is_attr((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT))
@@ -4474,11 +4474,11 @@
(yyvsp[0].type)->attrs = check_iface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
(yyvsp[0].type)->defined = TRUE;
}
-#line 4478 "parser.tab.c" /* yacc.c:1648 */
+#line 4478 "parser.tab.c" /* yacc.c:1651 */
break;
case 309:
-#line 913 "parser.y" /* yacc.c:1648 */
+#line 913 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-5].ifinfo).interface;
if((yyval.type) == (yyvsp[-4].type))
error_loc("Interface can't inherit from itself\n");
@@ -4486,594 +4486,594 @@
check_async_uuid((yyval.type));
pointer_default = (yyvsp[-5].ifinfo).old_pointer_default;
}
-#line 4490 "parser.tab.c" /* yacc.c:1648 */
+#line 4490 "parser.tab.c" /* yacc.c:1651 */
break;
case 310:
-#line 924 "parser.y" /* yacc.c:1648 */
+#line 924 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-7].ifinfo).interface;
type_interface_define((yyval.type), find_type_or_error2((yyvsp[-5].str), 0), (yyvsp[-2].stmt_list));
pointer_default = (yyvsp[-7].ifinfo).old_pointer_default;
}
-#line 4499 "parser.tab.c" /* yacc.c:1648 */
+#line 4499 "parser.tab.c" /* yacc.c:1651 */
break;
case 311:
-#line 928 "parser.y" /* yacc.c:1648 */
+#line 928 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-1].type); }
-#line 4505 "parser.tab.c" /* yacc.c:1648 */
+#line 4505 "parser.tab.c" /* yacc.c:1651 */
break;
case 312:
-#line 932 "parser.y" /* yacc.c:1648 */
+#line 932 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-1].type); }
-#line 4511 "parser.tab.c" /* yacc.c:1648 */
+#line 4511 "parser.tab.c" /* yacc.c:1651 */
break;
case 313:
-#line 933 "parser.y" /* yacc.c:1648 */
+#line 933 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-1].type); }
-#line 4517 "parser.tab.c" /* yacc.c:1648 */
+#line 4517 "parser.tab.c" /* yacc.c:1651 */
break;
case 314:
-#line 936 "parser.y" /* yacc.c:1648 */
+#line 936 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4523 "parser.tab.c" /* yacc.c:1648 */
+#line 4523 "parser.tab.c" /* yacc.c:1651 */
break;
case 315:
-#line 937 "parser.y" /* yacc.c:1648 */
+#line 937 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4529 "parser.tab.c" /* yacc.c:1648 */
+#line 4529 "parser.tab.c" /* yacc.c:1651 */
break;
case 316:
-#line 940 "parser.y" /* yacc.c:1648 */
+#line 940 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type);
(yyval.type)->attrs = check_module_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
}
-#line 4537 "parser.tab.c" /* yacc.c:1648 */
+#line 4537 "parser.tab.c" /* yacc.c:1651 */
break;
case 317:
-#line 946 "parser.y" /* yacc.c:1648 */
+#line 946 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[-4].type);
type_module_define((yyval.type), (yyvsp[-2].stmt_list));
}
-#line 4545 "parser.tab.c" /* yacc.c:1648 */
+#line 4545 "parser.tab.c" /* yacc.c:1651 */
break;
case 318:
-#line 952 "parser.y" /* yacc.c:1648 */
+#line 952 "parser.y" /* yacc.c:1651 */
{ (yyval.stgclass) = STG_EXTERN; }
-#line 4551 "parser.tab.c" /* yacc.c:1648 */
+#line 4551 "parser.tab.c" /* yacc.c:1651 */
break;
case 319:
-#line 953 "parser.y" /* yacc.c:1648 */
+#line 953 "parser.y" /* yacc.c:1651 */
{ (yyval.stgclass) = STG_STATIC; }
-#line 4557 "parser.tab.c" /* yacc.c:1648 */
+#line 4557 "parser.tab.c" /* yacc.c:1651 */
break;
case 320:
-#line 954 "parser.y" /* yacc.c:1648 */
+#line 954 "parser.y" /* yacc.c:1651 */
{ (yyval.stgclass) = STG_REGISTER; }
-#line 4563 "parser.tab.c" /* yacc.c:1648 */
+#line 4563 "parser.tab.c" /* yacc.c:1651 */
break;
case 321:
-#line 958 "parser.y" /* yacc.c:1648 */
+#line 958 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_INLINE); }
-#line 4569 "parser.tab.c" /* yacc.c:1648 */
+#line 4569 "parser.tab.c" /* yacc.c:1651 */
break;
case 322:
-#line 962 "parser.y" /* yacc.c:1648 */
+#line 962 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_CONST); }
-#line 4575 "parser.tab.c" /* yacc.c:1648 */
+#line 4575 "parser.tab.c" /* yacc.c:1651 */
break;
case 323:
-#line 965 "parser.y" /* yacc.c:1648 */
+#line 965 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = NULL; }
-#line 4581 "parser.tab.c" /* yacc.c:1648 */
+#line 4581 "parser.tab.c" /* yacc.c:1651 */
break;
case 324:
-#line 966 "parser.y" /* yacc.c:1648 */
+#line 966 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = append_attr((yyvsp[-1].attr_list), (yyvsp[0].attr)); }
-#line 4587 "parser.tab.c" /* yacc.c:1648 */
+#line 4587 "parser.tab.c" /* yacc.c:1651 */
break;
case 325:
-#line 969 "parser.y" /* yacc.c:1648 */
+#line 969 "parser.y" /* yacc.c:1651 */
{ (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, NULL, STG_NONE); }
-#line 4593 "parser.tab.c" /* yacc.c:1648 */
+#line 4593 "parser.tab.c" /* yacc.c:1651 */
break;
case 326:
-#line 971 "parser.y" /* yacc.c:1648 */
+#line 971 "parser.y" /* yacc.c:1651 */
{ (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), NULL, STG_NONE); }
-#line 4599 "parser.tab.c" /* yacc.c:1648 */
+#line 4599 "parser.tab.c" /* yacc.c:1651 */
break;
case 327:
-#line 974 "parser.y" /* yacc.c:1648 */
+#line 974 "parser.y" /* yacc.c:1651 */
{ (yyval.declspec) = NULL; }
-#line 4605 "parser.tab.c" /* yacc.c:1648 */
+#line 4605 "parser.tab.c" /* yacc.c:1651 */
break;
case 329:
-#line 979 "parser.y" /* yacc.c:1648 */
+#line 979 "parser.y" /* yacc.c:1651 */
{ (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
-#line 4611 "parser.tab.c" /* yacc.c:1648 */
+#line 4611 "parser.tab.c" /* yacc.c:1651 */
break;
case 330:
-#line 980 "parser.y" /* yacc.c:1648 */
+#line 980 "parser.y" /* yacc.c:1651 */
{ (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
-#line 4617 "parser.tab.c" /* yacc.c:1648 */
+#line 4617 "parser.tab.c" /* yacc.c:1651 */
break;
case 331:
-#line 981 "parser.y" /* yacc.c:1648 */
+#line 981 "parser.y" /* yacc.c:1651 */
{ (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, NULL, (yyvsp[-1].stgclass)); }
-#line 4623 "parser.tab.c" /* yacc.c:1648 */
+#line 4623 "parser.tab.c" /* yacc.c:1651 */
break;
case 332:
-#line 986 "parser.y" /* yacc.c:1648 */
+#line 986 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4629 "parser.tab.c" /* yacc.c:1648 */
+#line 4629 "parser.tab.c" /* yacc.c:1651 */
break;
case 333:
-#line 987 "parser.y" /* yacc.c:1648 */
+#line 987 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4636 "parser.tab.c" /* yacc.c:1648 */
+#line 4636 "parser.tab.c" /* yacc.c:1651 */
break;
case 335:
-#line 993 "parser.y" /* yacc.c:1648 */
+#line 993 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4642 "parser.tab.c" /* yacc.c:1648 */
+#line 4642 "parser.tab.c" /* yacc.c:1651 */
break;
case 336:
-#line 994 "parser.y" /* yacc.c:1648 */
+#line 994 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4648 "parser.tab.c" /* yacc.c:1648 */
+#line 4648 "parser.tab.c" /* yacc.c:1651 */
break;
case 337:
-#line 995 "parser.y" /* yacc.c:1648 */
+#line 995 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4654 "parser.tab.c" /* yacc.c:1648 */
+#line 4654 "parser.tab.c" /* yacc.c:1651 */
break;
case 338:
-#line 996 "parser.y" /* yacc.c:1648 */
+#line 996 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-3].declarator);
(yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
(yyval.declarator)->type = NULL;
}
-#line 4663 "parser.tab.c" /* yacc.c:1648 */
+#line 4663 "parser.tab.c" /* yacc.c:1651 */
break;
case 339:
-#line 1005 "parser.y" /* yacc.c:1648 */
+#line 1005 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4669 "parser.tab.c" /* yacc.c:1648 */
+#line 4669 "parser.tab.c" /* yacc.c:1651 */
break;
case 340:
-#line 1006 "parser.y" /* yacc.c:1648 */
+#line 1006 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4676 "parser.tab.c" /* yacc.c:1648 */
+#line 4676 "parser.tab.c" /* yacc.c:1651 */
break;
case 342:
-#line 1014 "parser.y" /* yacc.c:1648 */
+#line 1014 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4682 "parser.tab.c" /* yacc.c:1648 */
+#line 4682 "parser.tab.c" /* yacc.c:1651 */
break;
case 343:
-#line 1015 "parser.y" /* yacc.c:1648 */
+#line 1015 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4689 "parser.tab.c" /* yacc.c:1648 */
+#line 4689 "parser.tab.c" /* yacc.c:1651 */
break;
case 344:
-#line 1020 "parser.y" /* yacc.c:1648 */
+#line 1020 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator(NULL); }
-#line 4695 "parser.tab.c" /* yacc.c:1648 */
+#line 4695 "parser.tab.c" /* yacc.c:1651 */
break;
case 346:
-#line 1026 "parser.y" /* yacc.c:1648 */
+#line 1026 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4701 "parser.tab.c" /* yacc.c:1648 */
+#line 4701 "parser.tab.c" /* yacc.c:1651 */
break;
case 347:
-#line 1027 "parser.y" /* yacc.c:1648 */
+#line 1027 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4707 "parser.tab.c" /* yacc.c:1648 */
+#line 4707 "parser.tab.c" /* yacc.c:1651 */
break;
case 348:
-#line 1028 "parser.y" /* yacc.c:1648 */
+#line 1028 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4713 "parser.tab.c" /* yacc.c:1648 */
+#line 4713 "parser.tab.c" /* yacc.c:1651 */
break;
case 349:
-#line 1030 "parser.y" /* yacc.c:1648 */
+#line 1030 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator(NULL);
(yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
(yyval.declarator)->type = NULL;
}
-#line 4722 "parser.tab.c" /* yacc.c:1648 */
+#line 4722 "parser.tab.c" /* yacc.c:1651 */
break;
case 350:
-#line 1035 "parser.y" /* yacc.c:1648 */
+#line 1035 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-3].declarator);
(yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
(yyval.declarator)->type = NULL;
}
-#line 4731 "parser.tab.c" /* yacc.c:1648 */
+#line 4731 "parser.tab.c" /* yacc.c:1651 */
break;
case 351:
-#line 1044 "parser.y" /* yacc.c:1648 */
+#line 1044 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4737 "parser.tab.c" /* yacc.c:1648 */
+#line 4737 "parser.tab.c" /* yacc.c:1651 */
break;
case 352:
-#line 1045 "parser.y" /* yacc.c:1648 */
+#line 1045 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4743 "parser.tab.c" /* yacc.c:1648 */
+#line 4743 "parser.tab.c" /* yacc.c:1651 */
break;
case 354:
-#line 1052 "parser.y" /* yacc.c:1648 */
+#line 1052 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4749 "parser.tab.c" /* yacc.c:1648 */
+#line 4749 "parser.tab.c" /* yacc.c:1651 */
break;
case 355:
-#line 1053 "parser.y" /* yacc.c:1648 */
+#line 1053 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4755 "parser.tab.c" /* yacc.c:1648 */
+#line 4755 "parser.tab.c" /* yacc.c:1651 */
break;
case 356:
-#line 1057 "parser.y" /* yacc.c:1648 */
+#line 1057 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator(NULL); }
-#line 4761 "parser.tab.c" /* yacc.c:1648 */
+#line 4761 "parser.tab.c" /* yacc.c:1651 */
break;
case 358:
-#line 1065 "parser.y" /* yacc.c:1648 */
+#line 1065 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4767 "parser.tab.c" /* yacc.c:1648 */
+#line 4767 "parser.tab.c" /* yacc.c:1651 */
break;
case 359:
-#line 1066 "parser.y" /* yacc.c:1648 */
+#line 1066 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4773 "parser.tab.c" /* yacc.c:1648 */
+#line 4773 "parser.tab.c" /* yacc.c:1651 */
break;
case 360:
-#line 1067 "parser.y" /* yacc.c:1648 */
+#line 1067 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4779 "parser.tab.c" /* yacc.c:1648 */
+#line 4779 "parser.tab.c" /* yacc.c:1651 */
break;
case 361:
-#line 1068 "parser.y" /* yacc.c:1648 */
+#line 1068 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4785 "parser.tab.c" /* yacc.c:1648 */
+#line 4785 "parser.tab.c" /* yacc.c:1651 */
break;
case 362:
-#line 1070 "parser.y" /* yacc.c:1648 */
+#line 1070 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = make_declarator(NULL);
(yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
(yyval.declarator)->type = NULL;
}
-#line 4794 "parser.tab.c" /* yacc.c:1648 */
+#line 4794 "parser.tab.c" /* yacc.c:1651 */
break;
case 363:
-#line 1075 "parser.y" /* yacc.c:1648 */
+#line 1075 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-3].declarator);
(yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
(yyval.declarator)->type = NULL;
}
-#line 4803 "parser.tab.c" /* yacc.c:1648 */
+#line 4803 "parser.tab.c" /* yacc.c:1651 */
break;
case 364:
-#line 1082 "parser.y" /* yacc.c:1648 */
+#line 1082 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4809 "parser.tab.c" /* yacc.c:1648 */
+#line 4809 "parser.tab.c" /* yacc.c:1651 */
break;
case 365:
-#line 1083 "parser.y" /* yacc.c:1648 */
+#line 1083 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4815 "parser.tab.c" /* yacc.c:1648 */
+#line 4815 "parser.tab.c" /* yacc.c:1651 */
break;
case 366:
-#line 1086 "parser.y" /* yacc.c:1648 */
+#line 1086 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = NULL; }
-#line 4821 "parser.tab.c" /* yacc.c:1648 */
+#line 4821 "parser.tab.c" /* yacc.c:1651 */
break;
case 367:
-#line 1087 "parser.y" /* yacc.c:1648 */
+#line 1087 "parser.y" /* yacc.c:1651 */
{ (yyval.expr) = (yyvsp[0].expr); }
-#line 4827 "parser.tab.c" /* yacc.c:1648 */
+#line 4827 "parser.tab.c" /* yacc.c:1651 */
break;
case 368:
-#line 1090 "parser.y" /* yacc.c:1648 */
+#line 1090 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
error_loc("unnamed fields are not allowed\n");
}
-#line 4836 "parser.tab.c" /* yacc.c:1648 */
+#line 4836 "parser.tab.c" /* yacc.c:1651 */
break;
case 369:
-#line 1097 "parser.y" /* yacc.c:1648 */
+#line 1097 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4842 "parser.tab.c" /* yacc.c:1648 */
+#line 4842 "parser.tab.c" /* yacc.c:1651 */
break;
case 370:
-#line 1099 "parser.y" /* yacc.c:1648 */
+#line 1099 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4848 "parser.tab.c" /* yacc.c:1648 */
+#line 4848 "parser.tab.c" /* yacc.c:1651 */
break;
case 371:
-#line 1103 "parser.y" /* yacc.c:1648 */
+#line 1103 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[0].declarator); }
-#line 4854 "parser.tab.c" /* yacc.c:1648 */
+#line 4854 "parser.tab.c" /* yacc.c:1651 */
break;
case 372:
-#line 1104 "parser.y" /* yacc.c:1648 */
+#line 1104 "parser.y" /* yacc.c:1651 */
{ (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
-#line 4860 "parser.tab.c" /* yacc.c:1648 */
+#line 4860 "parser.tab.c" /* yacc.c:1651 */
break;
case 373:
-#line 1108 "parser.y" /* yacc.c:1648 */
+#line 1108 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = THREADING_APARTMENT; }
-#line 4866 "parser.tab.c" /* yacc.c:1648 */
+#line 4866 "parser.tab.c" /* yacc.c:1651 */
break;
case 374:
-#line 1109 "parser.y" /* yacc.c:1648 */
+#line 1109 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = THREADING_NEUTRAL; }
-#line 4872 "parser.tab.c" /* yacc.c:1648 */
+#line 4872 "parser.tab.c" /* yacc.c:1651 */
break;
case 375:
-#line 1110 "parser.y" /* yacc.c:1648 */
+#line 1110 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = THREADING_SINGLE; }
-#line 4878 "parser.tab.c" /* yacc.c:1648 */
+#line 4878 "parser.tab.c" /* yacc.c:1651 */
break;
case 376:
-#line 1111 "parser.y" /* yacc.c:1648 */
+#line 1111 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = THREADING_FREE; }
-#line 4884 "parser.tab.c" /* yacc.c:1648 */
+#line 4884 "parser.tab.c" /* yacc.c:1651 */
break;
case 377:
-#line 1112 "parser.y" /* yacc.c:1648 */
+#line 1112 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = THREADING_BOTH; }
-#line 4890 "parser.tab.c" /* yacc.c:1648 */
+#line 4890 "parser.tab.c" /* yacc.c:1651 */
break;
case 378:
-#line 1116 "parser.y" /* yacc.c:1648 */
+#line 1116 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = FC_RP; }
-#line 4896 "parser.tab.c" /* yacc.c:1648 */
+#line 4896 "parser.tab.c" /* yacc.c:1651 */
break;
case 379:
-#line 1117 "parser.y" /* yacc.c:1648 */
+#line 1117 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = FC_UP; }
-#line 4902 "parser.tab.c" /* yacc.c:1648 */
+#line 4902 "parser.tab.c" /* yacc.c:1651 */
break;
case 380:
-#line 1118 "parser.y" /* yacc.c:1648 */
+#line 1118 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = FC_FP; }
-#line 4908 "parser.tab.c" /* yacc.c:1648 */
+#line 4908 "parser.tab.c" /* yacc.c:1651 */
break;
case 381:
-#line 1121 "parser.y" /* yacc.c:1648 */
+#line 1121 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 4914 "parser.tab.c" /* yacc.c:1648 */
+#line 4914 "parser.tab.c" /* yacc.c:1651 */
break;
case 382:
-#line 1124 "parser.y" /* yacc.c:1648 */
+#line 1124 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_void(); }
-#line 4920 "parser.tab.c" /* yacc.c:1648 */
+#line 4920 "parser.tab.c" /* yacc.c:1651 */
break;
case 383:
-#line 1125 "parser.y" /* yacc.c:1648 */
+#line 1125 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4926 "parser.tab.c" /* yacc.c:1648 */
+#line 4926 "parser.tab.c" /* yacc.c:1651 */
break;
case 384:
-#line 1126 "parser.y" /* yacc.c:1648 */
+#line 1126 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); }
-#line 4932 "parser.tab.c" /* yacc.c:1648 */
+#line 4932 "parser.tab.c" /* yacc.c:1651 */
break;
case 385:
-#line 1127 "parser.y" /* yacc.c:1648 */
+#line 1127 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); }
-#line 4938 "parser.tab.c" /* yacc.c:1648 */
+#line 4938 "parser.tab.c" /* yacc.c:1651 */
break;
case 386:
-#line 1128 "parser.y" /* yacc.c:1648 */
+#line 1128 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 4944 "parser.tab.c" /* yacc.c:1648 */
+#line 4944 "parser.tab.c" /* yacc.c:1651 */
break;
case 387:
-#line 1129 "parser.y" /* yacc.c:1648 */
+#line 1129 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); }
-#line 4950 "parser.tab.c" /* yacc.c:1648 */
+#line 4950 "parser.tab.c" /* yacc.c:1651 */
break;
case 388:
-#line 1130 "parser.y" /* yacc.c:1648 */
+#line 1130 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 4956 "parser.tab.c" /* yacc.c:1648 */
+#line 4956 "parser.tab.c" /* yacc.c:1651 */
break;
case 389:
-#line 1131 "parser.y" /* yacc.c:1648 */
+#line 1131 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = (yyvsp[0].type); }
-#line 4962 "parser.tab.c" /* yacc.c:1648 */
+#line 4962 "parser.tab.c" /* yacc.c:1651 */
break;
case 390:
-#line 1132 "parser.y" /* yacc.c:1648 */
+#line 1132 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 4968 "parser.tab.c" /* yacc.c:1648 */
+#line 4968 "parser.tab.c" /* yacc.c:1651 */
break;
case 391:
-#line 1133 "parser.y" /* yacc.c:1648 */
+#line 1133 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = make_safearray((yyvsp[-1].type)); }
-#line 4974 "parser.tab.c" /* yacc.c:1648 */
+#line 4974 "parser.tab.c" /* yacc.c:1651 */
break;
case 392:
-#line 1137 "parser.y" /* yacc.c:1648 */
+#line 1137 "parser.y" /* yacc.c:1651 */
{ (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
reg_typedefs((yyvsp[-1].declspec), (yyvsp[0].declarator_list), check_typedef_attrs((yyvsp[-4].attr_list)));
(yyval.statement) = make_statement_typedef((yyvsp[0].declarator_list));
}
-#line 4983 "parser.tab.c" /* yacc.c:1648 */
+#line 4983 "parser.tab.c" /* yacc.c:1651 */
break;
case 393:
-#line 1144 "parser.y" /* yacc.c:1648 */
+#line 1144 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
-#line 4989 "parser.tab.c" /* yacc.c:1648 */
+#line 4989 "parser.tab.c" /* yacc.c:1651 */
break;
case 394:
-#line 1147 "parser.y" /* yacc.c:1648 */
+#line 1147 "parser.y" /* yacc.c:1651 */
{ (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
-#line 4995 "parser.tab.c" /* yacc.c:1648 */
+#line 4995 "parser.tab.c" /* yacc.c:1651 */
break;
case 395:
-#line 1151 "parser.y" /* yacc.c:1648 */
+#line 1151 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
-#line 5001 "parser.tab.c" /* yacc.c:1648 */
+#line 5001 "parser.tab.c" /* yacc.c:1651 */
break;
case 396:
-#line 1152 "parser.y" /* yacc.c:1648 */
+#line 1152 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
-#line 5007 "parser.tab.c" /* yacc.c:1648 */
+#line 5007 "parser.tab.c" /* yacc.c:1651 */
break;
case 397:
-#line 1153 "parser.y" /* yacc.c:1648 */
+#line 1153 "parser.y" /* yacc.c:1651 */
{ (yyval.num) = (yyvsp[0].num); }
-#line 5013 "parser.tab.c" /* yacc.c:1648 */
+#line 5013 "parser.tab.c" /* yacc.c:1651 */
break;
case 402:
-#line 1166 "parser.y" /* yacc.c:1648 */
+#line 1166 "parser.y" /* yacc.c:1651 */
{ type_t *type = find_type_or_error((yyvsp[-1].str), 0);
type->attrs = append_attr_list(type->attrs, (yyvsp[-2].attr_list));
}
-#line 5021 "parser.tab.c" /* yacc.c:1648 */
+#line 5021 "parser.tab.c" /* yacc.c:1651 */
break;
case 403:
-#line 1171 "parser.y" /* yacc.c:1648 */
+#line 1171 "parser.y" /* yacc.c:1651 */
{ type_t *iface = find_type_or_error2((yyvsp[-3].str), 0);
if (type_get_type(iface) != TYPE_INTERFACE)
error_loc("%s is not an interface\n", iface->name);
iface->attrs = append_attr_list(iface->attrs, (yyvsp[-5].attr_list));
}
-#line 5031 "parser.tab.c" /* yacc.c:1648 */
+#line 5031 "parser.tab.c" /* yacc.c:1651 */
break;
case 404:
-#line 1178 "parser.y" /* yacc.c:1648 */
+#line 1178 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = NULL; }
-#line 5037 "parser.tab.c" /* yacc.c:1648 */
+#line 5037 "parser.tab.c" /* yacc.c:1651 */
break;
case 405:
-#line 1179 "parser.y" /* yacc.c:1648 */
+#line 1179 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 5043 "parser.tab.c" /* yacc.c:1648 */
+#line 5043 "parser.tab.c" /* yacc.c:1651 */
break;
case 406:
-#line 1182 "parser.y" /* yacc.c:1648 */
+#line 1182 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); }
-#line 5049 "parser.tab.c" /* yacc.c:1648 */
+#line 5049 "parser.tab.c" /* yacc.c:1651 */
break;
case 407:
-#line 1183 "parser.y" /* yacc.c:1648 */
+#line 1183 "parser.y" /* yacc.c:1651 */
{ (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); }
-#line 5055 "parser.tab.c" /* yacc.c:1648 */
+#line 5055 "parser.tab.c" /* yacc.c:1651 */
break;
case 408:
-#line 1186 "parser.y" /* yacc.c:1648 */
+#line 1186 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 5061 "parser.tab.c" /* yacc.c:1648 */
+#line 5061 "parser.tab.c" /* yacc.c:1651 */
break;
case 409:
-#line 1187 "parser.y" /* yacc.c:1648 */
+#line 1187 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 5067 "parser.tab.c" /* yacc.c:1648 */
+#line 5067 "parser.tab.c" /* yacc.c:1651 */
break;
case 410:
-#line 1188 "parser.y" /* yacc.c:1648 */
+#line 1188 "parser.y" /* yacc.c:1651 */
{ (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 5073 "parser.tab.c" /* yacc.c:1648 */
+#line 5073 "parser.tab.c" /* yacc.c:1651 */
break;
-#line 5077 "parser.tab.c" /* yacc.c:1648 */
+#line 5077 "parser.tab.c" /* yacc.c:1651 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -5301,7 +5301,7 @@
#endif
return yyresult;
}
-#line 1190 "parser.y" /* yacc.c:1907 */
+#line 1190 "parser.y" /* yacc.c:1910 */
static void decl_builtin_basic(const char *name, enum type_basic_type type)
@@ -7026,6 +7026,7 @@
static void check_all_user_types(const statement_list_t *stmts)
{
const statement_t *stmt;
+ const var_t *v;
if (stmts) LIST_FOR_EACH_ENTRY(stmt, stmts, const statement_t, entry)
{
@@ -7037,7 +7038,10 @@
const statement_t *stmt_func;
STATEMENTS_FOR_EACH_FUNC(stmt_func, type_iface_get_stmts(stmt->u.type)) {
const var_t *func = stmt_func->u.var;
- check_for_additional_prototype_types(func->type->details.function->args);
+ if (func->type->details.function->args)
+ LIST_FOR_EACH_ENTRY( v, func->type->details.function->args, const var_t, entry )
+ check_for_additional_prototype_types(v->type);
+ check_for_additional_prototype_types(type_function_get_rettype(func->type));
}
}
}
diff --git a/mingw-w64-tools/widl/src/parser.tab.h b/mingw-w64-tools/widl/src/parser.tab.h
index 0987472..d6974dd 100644
--- a/mingw-w64-tools/widl/src/parser.tab.h
+++ b/mingw-w64-tools/widl/src/parser.tab.h
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.1. */
/* Bison interface for Yacc-like parsers in C
@@ -239,7 +239,7 @@
union YYSTYPE
{
-#line 142 "parser.y" /* yacc.c:1910 */
+#line 142 "parser.y" /* yacc.c:1913 */
attr_t *attr;
attr_list_t *attr_list;
@@ -267,7 +267,7 @@
struct _decl_spec_t *declspec;
enum storage_class stgclass;
-#line 271 "parser.tab.h" /* yacc.c:1910 */
+#line 271 "parser.tab.h" /* yacc.c:1913 */
};
typedef union YYSTYPE YYSTYPE;
diff --git a/mingw-w64-tools/widl/src/parser.y b/mingw-w64-tools/widl/src/parser.y
index d979394..5156dce 100644
--- a/mingw-w64-tools/widl/src/parser.y
+++ b/mingw-w64-tools/widl/src/parser.y
@@ -2911,6 +2911,7 @@
static void check_all_user_types(const statement_list_t *stmts)
{
const statement_t *stmt;
+ const var_t *v;
if (stmts) LIST_FOR_EACH_ENTRY(stmt, stmts, const statement_t, entry)
{
@@ -2922,7 +2923,10 @@
const statement_t *stmt_func;
STATEMENTS_FOR_EACH_FUNC(stmt_func, type_iface_get_stmts(stmt->u.type)) {
const var_t *func = stmt_func->u.var;
- check_for_additional_prototype_types(func->type->details.function->args);
+ if (func->type->details.function->args)
+ LIST_FOR_EACH_ENTRY( v, func->type->details.function->args, const var_t, entry )
+ check_for_additional_prototype_types(v->type);
+ check_for_additional_prototype_types(type_function_get_rettype(func->type));
}
}
}
diff --git a/mingw-w64-tools/widl/src/proxy.c b/mingw-w64-tools/widl/src/proxy.c
index 87c27be..8d0e8b2 100644
--- a/mingw-w64-tools/widl/src/proxy.c
+++ b/mingw-w64-tools/widl/src/proxy.c
@@ -942,7 +942,7 @@
write_stubdesc(expr_eval_routines);
print_proxy( "#if !defined(__RPC_WIN%u__)\n", pointer_size == 8 ? 64 : 32);
- print_proxy( "#error Currently only Wine and WIN32 are supported.\n");
+ print_proxy( "#error Invalid build platform for this proxy.\n");
print_proxy( "#endif\n");
print_proxy( "\n");
write_procformatstring(proxy, stmts, need_proxy);
@@ -1053,26 +1053,6 @@
init_proxy(stmts);
if(!proxy) return;
- if (do_win32 && do_win64)
- {
- fprintf(proxy, "\n#ifndef _WIN64\n\n");
- pointer_size = 4;
- write_proxy_routines( stmts );
- fprintf(proxy, "\n#else /* _WIN64 */\n\n");
- pointer_size = 8;
- write_proxy_routines( stmts );
- fprintf(proxy, "\n#endif /* _WIN64 */\n");
- }
- else if (do_win32)
- {
- pointer_size = 4;
- write_proxy_routines( stmts );
- }
- else if (do_win64)
- {
- pointer_size = 8;
- write_proxy_routines( stmts );
- }
-
+ write_proxy_routines( stmts );
fclose(proxy);
}
diff --git a/mingw-w64-tools/widl/src/register.c b/mingw-w64-tools/widl/src/register.c
index 210fb74..1c369e7 100644
--- a/mingw-w64-tools/widl/src/register.c
+++ b/mingw-w64-tools/widl/src/register.c
@@ -325,7 +325,7 @@
sprintf(resname, "%s\\%d", typelib_name, expr->cval);
}
put_str( indent, "'%x' { %s = s '%%MODULE%%%s' }\n",
- lcid_expr ? lcid_expr->cval : 0, typelib_kind == SYS_WIN64 ? "win64" : "win32", id_part );
+ lcid_expr ? lcid_expr->cval : 0, pointer_size == 8 ? "win64" : "win32", id_part );
put_str( indent, "FLAGS = s '%u'\n", flags );
put_str( --indent, "}\n" );
put_str( --indent, "}\n" );
diff --git a/mingw-w64-tools/widl/src/server.c b/mingw-w64-tools/widl/src/server.c
index 783ff90..59c17d6 100644
--- a/mingw-w64-tools/widl/src/server.c
+++ b/mingw-w64-tools/widl/src/server.c
@@ -55,6 +55,7 @@
unsigned char explicit_fc, implicit_fc;
int has_full_pointer = is_full_pointer_function(func);
const var_t *handle_var = get_func_handle_var( iface, func, &explicit_fc, &implicit_fc );
+ type_t *ret_type = type_function_get_rettype(func->type);
if (is_interpreted_func( iface, func )) return;
@@ -75,7 +76,7 @@
indent++;
write_remoting_arguments(server, indent, func, "__frame->", PASS_OUT, PHASE_FREE);
- if (!is_void(type_function_get_rettype(func->type)))
+ if (!is_void(ret_type))
write_remoting_arguments(server, indent, func, "__frame->", PASS_RETURN, PHASE_FREE);
if (has_full_pointer)
@@ -154,9 +155,16 @@
assign_stub_out_args(server, indent, func, "__frame->");
/* Call the real server function */
- print_server("%s%s%s",
- is_void(type_function_get_rettype(func->type)) ? "" : "__frame->_RetVal = ",
- prefix_server, get_name(func));
+ if (is_context_handle(ret_type))
+ {
+ print_server("__frame->_RetVal = NDRSContextUnmarshall((char*)0, _pRpcMessage->DataRepresentation);\n");
+ print_server("*((");
+ write_type_decl(server, ret_type, NULL);
+ fprintf(server, "*)NDRSContextValue(__frame->_RetVal)) = ");
+ }
+ else
+ print_server("%s", is_void(ret_type) ? "" : "__frame->_RetVal = ");
+ fprintf(server, "%s%s", prefix_server, get_name(func));
if (type_get_function_args(func->type))
{
@@ -197,7 +205,7 @@
{
write_remoting_arguments(server, indent, func, "__frame->", PASS_OUT, PHASE_BUFFERSIZE);
- if (!is_void(type_function_get_rettype(func->type)))
+ if (!is_void(ret_type))
write_remoting_arguments(server, indent, func, "__frame->", PASS_RETURN, PHASE_BUFFERSIZE);
print_server("_pRpcMessage->BufferLength = __frame->_StubMsg.BufferLength;\n");
@@ -216,7 +224,7 @@
write_remoting_arguments(server, indent, func, "__frame->", PASS_OUT, PHASE_MARSHAL);
/* marshall the return value */
- if (!is_void(type_function_get_rettype(func->type)))
+ if (!is_void(ret_type))
write_remoting_arguments(server, indent, func, "__frame->", PASS_RETURN, PHASE_MARSHAL);
indent--;
@@ -544,26 +552,6 @@
if (!server)
return;
- if (do_win32 && do_win64)
- {
- fprintf(server, "#ifndef _WIN64\n\n");
- pointer_size = 4;
- write_server_routines( stmts );
- fprintf(server, "\n#else /* _WIN64 */\n\n");
- pointer_size = 8;
- write_server_routines( stmts );
- fprintf(server, "\n#endif /* _WIN64 */\n");
- }
- else if (do_win32)
- {
- pointer_size = 4;
- write_server_routines( stmts );
- }
- else if (do_win64)
- {
- pointer_size = 8;
- write_server_routines( stmts );
- }
-
+ write_server_routines( stmts );
fclose(server);
}
diff --git a/mingw-w64-tools/widl/src/typegen.c b/mingw-w64-tools/widl/src/typegen.c
index 27ba60f..e5fb20c 100644
--- a/mingw-w64-tools/widl/src/typegen.c
+++ b/mingw-w64-tools/widl/src/typegen.c
@@ -67,6 +67,7 @@
TYPE_CONTEXT_PARAM,
TYPE_CONTEXT_CONTAINER,
TYPE_CONTEXT_CONTAINER_NO_POINTERS,
+ TYPE_CONTEXT_RETVAL,
};
/* parameter flags in Oif mode */
@@ -287,7 +288,7 @@
int pointer_fc = get_pointer_fc(type, attrs, context == TYPE_CONTEXT_TOPLEVELPARAM);
if (pointer_fc == FC_UP && is_attr( attrs, ATTR_OUT ) &&
- context == TYPE_CONTEXT_PARAM && is_object( current_iface ))
+ (context == TYPE_CONTEXT_PARAM || context == TYPE_CONTEXT_RETVAL) && is_object( current_iface ))
pointer_fc = FC_OP;
return pointer_fc;
@@ -442,23 +443,27 @@
}
static unsigned char get_contexthandle_flags( const type_t *iface, const attr_list_t *attrs,
- const type_t *type )
+ const type_t *type, int is_return )
{
unsigned char flags = 0;
+ int is_out;
if (is_attr(iface->attrs, ATTR_STRICTCONTEXTHANDLE)) flags |= NDR_STRICT_CONTEXT_HANDLE;
if (is_ptr(type) &&
!is_attr( type->attrs, ATTR_CONTEXTHANDLE ) &&
!is_attr( attrs, ATTR_CONTEXTHANDLE ))
- flags |= 0x80;
+ flags |= HANDLE_PARAM_IS_VIA_PTR;
- if (is_attr(attrs, ATTR_IN))
+ if (is_return) return flags | HANDLE_PARAM_IS_OUT | HANDLE_PARAM_IS_RETURN;
+
+ is_out = is_attr(attrs, ATTR_OUT);
+ if (is_attr(attrs, ATTR_IN) || !is_out)
{
- flags |= 0x40;
- if (!is_attr(attrs, ATTR_OUT)) flags |= NDR_CONTEXT_HANDLE_CANNOT_BE_NULL;
+ flags |= HANDLE_PARAM_IS_IN;
+ if (!is_out) flags |= NDR_CONTEXT_HANDLE_CANNOT_BE_NULL;
}
- if (is_attr(attrs, ATTR_OUT)) flags |= 0x20;
+ if (is_out) flags |= HANDLE_PARAM_IS_OUT;
return flags;
}
@@ -1361,7 +1366,7 @@
*offset += 6;
break;
case FC_BIND_CONTEXT:
- handle_flags = get_contexthandle_flags( iface, handle_var->attrs, handle_var->type );
+ handle_flags = get_contexthandle_flags( iface, handle_var->attrs, handle_var->type, 0 );
print_file( file, indent, "0x%02x,\t/* %s */\n", explicit_fc, string_of_type(explicit_fc) );
print_file( file, indent, "0x%02x,\n", handle_flags );
print_file( file, indent, "NdrFcShort(0x%hx),\t/* stack offset = %hu */\n",
@@ -3494,17 +3499,17 @@
static unsigned int write_contexthandle_tfs(FILE *file,
const attr_list_t *attrs,
type_t *type,
- int toplevel_param,
+ enum type_context context,
unsigned int *typeformat_offset)
{
unsigned int start_offset = *typeformat_offset;
- unsigned char flags = get_contexthandle_flags( current_iface, attrs, type );
+ unsigned char flags = get_contexthandle_flags( current_iface, attrs, type, context == TYPE_CONTEXT_RETVAL );
print_start_tfs_comment(file, type, start_offset);
if (flags & 0x80) /* via ptr */
{
- int pointer_type = get_pointer_fc( type, attrs, toplevel_param );
+ int pointer_type = get_pointer_fc( type, attrs, context == TYPE_CONTEXT_TOPLEVELPARAM );
if (!pointer_type) pointer_type = FC_RP;
*typeformat_offset += 4;
print_file(file, 2,"0x%x, 0x0,\t/* %s */\n", pointer_type, string_of_type(pointer_type) );
@@ -3514,8 +3519,7 @@
print_file(file, 2, "0x%02x,\t/* FC_BIND_CONTEXT */\n", FC_BIND_CONTEXT);
print_file(file, 2, "0x%x,\t/* Context flags: ", flags);
- /* return and can't be null values overlap */
- if (((flags & 0x21) != 0x21) && (flags & NDR_CONTEXT_HANDLE_CANNOT_BE_NULL))
+ if (flags & NDR_CONTEXT_HANDLE_CANNOT_BE_NULL)
print_file(file, 0, "can't be null, ");
if (flags & NDR_CONTEXT_HANDLE_SERIALIZE)
print_file(file, 0, "serialize, ");
@@ -3523,13 +3527,13 @@
print_file(file, 0, "no serialize, ");
if (flags & NDR_STRICT_CONTEXT_HANDLE)
print_file(file, 0, "strict, ");
- if ((flags & 0x21) == 0x20)
- print_file(file, 0, "out, ");
- if ((flags & 0x21) == 0x21)
+ if (flags & HANDLE_PARAM_IS_RETURN)
print_file(file, 0, "return, ");
- if (flags & 0x40)
+ if (flags & HANDLE_PARAM_IS_OUT)
+ print_file(file, 0, "out, ");
+ if (flags & HANDLE_PARAM_IS_IN)
print_file(file, 0, "in, ");
- if (flags & 0x80)
+ if (flags & HANDLE_PARAM_IS_VIA_PTR)
print_file(file, 0, "via ptr, ");
print_file(file, 0, "*/\n");
print_file(file, 2, "0x%x,\t/* rundown routine */\n", get_context_handle_offset( type ));
@@ -3580,8 +3584,7 @@
{
case TGT_CTXT_HANDLE:
case TGT_CTXT_HANDLE_POINTER:
- return write_contexthandle_tfs(file, attrs, type,
- context == TYPE_CONTEXT_TOPLEVELPARAM, typeformat_offset);
+ return write_contexthandle_tfs(file, attrs, type, context, typeformat_offset);
case TGT_USER_TYPE:
return write_user_tfs(file, type, typeformat_offset);
case TGT_STRING:
@@ -3702,8 +3705,8 @@
var = type_function_get_retval(func->type);
if (!is_void(var->type))
- var->typestring_offset = write_type_tfs( file, 2, func->attrs, var->type, func->name,
- TYPE_CONTEXT_PARAM, offset);
+ var->typestring_offset = write_type_tfs( file, 2, var->attrs, var->type, func->name,
+ TYPE_CONTEXT_RETVAL, offset);
if (type_get_function_args(func->type))
LIST_FOR_EACH_ENTRY( var, type_get_function_args(func->type), var_t, entry )
@@ -4243,13 +4246,14 @@
}
else if (phase == PHASE_UNMARSHAL)
{
- if (pass == PASS_OUT)
+ if (pass == PASS_OUT || pass == PASS_RETURN)
{
if (!in_attr)
print_file(file, indent, "*%s%s = 0;\n", local_var_prefix, var->name);
print_file(file, indent, "NdrClientContextUnmarshall(\n");
print_file(file, indent + 1, "&__frame->_StubMsg,\n");
- print_file(file, indent + 1, "(NDR_CCONTEXT *)%s%s,\n", local_var_prefix, var->name);
+ print_file(file, indent + 1, "(NDR_CCONTEXT *)%s%s%s,\n",
+ pass == PASS_RETURN ? "&" : "", local_var_prefix, var->name);
print_file(file, indent + 1, "__frame->_Handle);\n");
}
else
@@ -4602,9 +4606,14 @@
/* declare return value */
if (!is_void(var->type))
{
- print_file(file, indent, "%s", "");
- write_type_decl(file, var->type, var->name);
- fprintf(file, ";\n");
+ if (is_context_handle(var->type))
+ print_file(file, indent, "NDR_SCONTEXT %s;\n", var->name);
+ else
+ {
+ print_file(file, indent, "%s", "");
+ write_type_decl(file, var->type, var->name);
+ fprintf(file, ";\n");
+ }
}
if (!type_get_function_args(func->type))
diff --git a/mingw-w64-tools/widl/src/typelib.c b/mingw-w64-tools/widl/src/typelib.c
index 9b1de2c..93f8f4d 100644
--- a/mingw-w64-tools/widl/src/typelib.c
+++ b/mingw-w64-tools/widl/src/typelib.c
@@ -169,7 +169,7 @@
else
return VT_I8;
case TYPE_BASIC_INT3264:
- if (typelib_kind == SYS_WIN64)
+ if (pointer_size == 8)
{
if (type_basic_get_sign(t) > 0)
return VT_UI8;
diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c
index 1af4250..cf174ef 100644
--- a/mingw-w64-tools/widl/src/widl.c
+++ b/mingw-w64-tools/widl/src/widl.c
@@ -44,11 +44,6 @@
#include "header.h"
#include "pathtools.h"
-/* future options to reserve characters for: */
-/* A = ACF input filename */
-/* J = do not search standard include path */
-/* w = select win16/win32 output (?) */
-
static const char usage[] =
"Usage: widl [options...] infile.idl\n"
" or: widl [options...] --dlldata-only name1 [name2...]\n"
@@ -64,7 +59,7 @@
" -H file Name of header file (default is infile.h)\n"
" -I path Set include search dir to path (multiple -I allowed)\n"
" --local-stubs=file Write empty stubs for call_as/local methods to file\n"
-" -m32, -m64 Set the kind of typelib to build (Win32 or Win64)\n"
+" -m32, -m64 Set the target architecture (Win32 or Win64)\n"
" -N Do not preprocess input\n"
" --oldnames Use old naming conventions\n"
" -o, --output=NAME Set the output file name\n"
@@ -82,8 +77,7 @@
" -u Generate interface identifiers file\n"
" -V Print version and exit\n"
" -W Enable pedantic warnings\n"
-" --win32 Only generate 32-bit code\n"
-" --win64 Only generate 64-bit code\n"
+" --win32, --win64 Set the target architecture (Win32 or Win64)\n"
" --win32-align n Set win32 structure alignment to 'n'\n"
" --win64-align n Set win64 structure alignment to 'n'\n"
"Debug level 'n' is a bitmask with following meaning:\n"
@@ -98,6 +92,20 @@
static const char version_string[] = "Wine IDL Compiler version " PACKAGE_VERSION "\n"
"Copyright 2002 Ove Kaaven\n";
+#ifdef __i386__
+enum target_cpu target_cpu = CPU_x86;
+#elif defined(__x86_64__)
+enum target_cpu target_cpu = CPU_x86_64;
+#elif defined(__powerpc__)
+enum target_cpu target_cpu = CPU_POWERPC;
+#elif defined(__arm__)
+enum target_cpu target_cpu = CPU_ARM;
+#elif defined(__aarch64__)
+enum target_cpu target_cpu = CPU_ARM64;
+#else
+#error Unsupported CPU
+#endif
+
int debuglevel = DEBUGLEVEL_NONE;
int parser_debug, yy_flex_debug;
@@ -114,8 +122,6 @@
int do_dlldata = 0;
static int no_preprocess = 0;
int old_names = 0;
-int do_win32 = 1;
-int do_win64 = 1;
int win32_packing = 8;
int win64_packing = 8;
int winrt_mode = 0;
@@ -148,7 +154,6 @@
static FILE *idfile;
unsigned int pointer_size = 0;
-syskind_t typelib_kind = sizeof(void*) == 8 ? SYS_WIN64 : SYS_WIN32;
time_t now;
@@ -188,6 +193,7 @@
{ "prefix-client", 1, NULL, PREFIX_CLIENT_OPTION },
{ "prefix-server", 1, NULL, PREFIX_SERVER_OPTION },
{ "robust", 0, NULL, ROBUST_OPTION },
+ { "target", 0, NULL, 'b' },
{ "winrt", 0, NULL, RT_OPTION },
{ "win32", 0, NULL, WIN32_OPTION },
{ "win64", 0, NULL, WIN64_OPTION },
@@ -269,20 +275,24 @@
{
static const struct
{
- const char *name;
- syskind_t kind;
+ const char *name;
+ enum target_cpu cpu;
} cpu_names[] =
{
- { "i386", SYS_WIN32 },
- { "i486", SYS_WIN32 },
- { "i586", SYS_WIN32 },
- { "i686", SYS_WIN32 },
- { "i786", SYS_WIN32 },
- { "amd64", SYS_WIN64 },
- { "x86_64", SYS_WIN64 },
- { "powerpc", SYS_WIN32 },
- { "arm", SYS_WIN32 },
- { "aarch64", SYS_WIN64 }
+ { "i386", CPU_x86 },
+ { "i486", CPU_x86 },
+ { "i586", CPU_x86 },
+ { "i686", CPU_x86 },
+ { "i786", CPU_x86 },
+ { "amd64", CPU_x86_64 },
+ { "x86_64", CPU_x86_64 },
+ { "powerpc", CPU_POWERPC },
+ { "arm", CPU_ARM },
+ { "armv5", CPU_ARM },
+ { "armv6", CPU_ARM },
+ { "armv7", CPU_ARM },
+ { "arm64", CPU_ARM64 },
+ { "aarch64", CPU_ARM64 },
};
unsigned int i;
@@ -296,7 +306,7 @@
{
if (!strcmp( cpu_names[i].name, spec ))
{
- typelib_kind = cpu_names[i].kind;
+ target_cpu = cpu_names[i].cpu;
free( spec );
return;
}
@@ -606,12 +616,10 @@
use_abi_namespace = 1;
break;
case WIN32_OPTION:
- do_win32 = 1;
- do_win64 = 0;
+ pointer_size = 4;
break;
case WIN64_OPTION:
- do_win32 = 0;
- do_win64 = 1;
+ pointer_size = 8;
break;
case WIN32_ALIGN_OPTION:
win32_packing = strtol(optarg, NULL, 0);
@@ -664,8 +672,8 @@
wpp_add_include_path(optarg);
break;
case 'm':
- if (!strcmp( optarg, "32" )) typelib_kind = SYS_WIN32;
- else if (!strcmp( optarg, "64" )) typelib_kind = SYS_WIN64;
+ if (!strcmp( optarg, "32" )) pointer_size = 4;
+ else if (!strcmp( optarg, "64" )) pointer_size = 8;
break;
case 'N':
no_preprocess = 1;
@@ -739,6 +747,26 @@
wpp_add_include_path(relocated_default_include_dir);
#endif
+ switch (target_cpu)
+ {
+ case CPU_x86:
+ if (pointer_size == 8) target_cpu = CPU_x86_64;
+ else pointer_size = 4;
+ break;
+ case CPU_x86_64:
+ if (pointer_size == 4) target_cpu = CPU_x86;
+ else pointer_size = 8;
+ break;
+ case CPU_ARM64:
+ if (pointer_size == 4) error( "Cannot build 32-bit code for this CPU\n" );
+ pointer_size = 8;
+ break;
+ default:
+ if (pointer_size == 8) error( "Cannot build 64-bit code for this CPU\n" );
+ pointer_size = 4;
+ break;
+ }
+
/* if nothing specified, try to guess output type from the output file name */
if (output_name && do_everything && !do_header && !do_typelib && !do_proxies &&
!do_client && !do_server && !do_regscript && !do_idfile && !do_dlldata)
diff --git a/mingw-w64-tools/widl/src/widl.h b/mingw-w64-tools/widl/src/widl.h
index 118e224..4f4252e 100644
--- a/mingw-w64-tools/widl/src/widl.h
+++ b/mingw-w64-tools/widl/src/widl.h
@@ -45,8 +45,6 @@
extern int do_idfile;
extern int do_dlldata;
extern int old_names;
-extern int do_win32;
-extern int do_win64;
extern int win32_packing;
extern int win64_packing;
extern int winrt_mode;
@@ -76,6 +74,13 @@
extern int line_number;
extern int char_number;
+enum target_cpu
+{
+ CPU_x86, CPU_x86_64, CPU_POWERPC, CPU_ARM, CPU_ARM64, CPU_LAST = CPU_ARM64
+};
+
+extern enum target_cpu target_cpu;
+
enum stub_mode
{
MODE_Os, /* inline stubs */
diff --git a/mingw-w64-tools/widl/src/widltypes.h b/mingw-w64-tools/widl/src/widltypes.h
index 08584de..afca4c0 100644
--- a/mingw-w64-tools/widl/src/widltypes.h
+++ b/mingw-w64-tools/widl/src/widltypes.h
@@ -553,11 +553,10 @@
SYS_WIN64
} syskind_t;
-extern syskind_t typelib_kind;
extern user_type_list_t user_type_list;
extern context_handle_list_t context_handle_list;
extern generic_handle_list_t generic_handle_list;
-void check_for_additional_prototype_types(const var_list_t *list);
+void check_for_additional_prototype_types(type_t *type);
void init_types(void);
type_t *alloc_type(void);
diff --git a/mingw-w64-tools/widl/src/write_msft.c b/mingw-w64-tools/widl/src/write_msft.c
index 88a80d1..cb4f0f3 100644
--- a/mingw-w64-tools/widl/src/write_msft.c
+++ b/mingw-w64-tools/widl/src/write_msft.c
@@ -2653,8 +2653,6 @@
GUID midl_info_guid = {0xde77ba65,0x517c,0x11d1,{0xa2,0xda,0x00,0x00,0xf8,0x77,0x3c,0xe9}};
char info_string[128];
- pointer_size = (typelib_kind == SYS_WIN64) ? 8 : 4;
-
msft = xmalloc(sizeof(*msft));
memset(msft, 0, sizeof(*msft));
msft->typelib = typelib;
@@ -2662,7 +2660,7 @@
ctl2_init_header(msft);
ctl2_init_segdir(msft);
- msft->typelib_header.varflags |= typelib_kind;
+ msft->typelib_header.varflags |= (pointer_size == 8) ? SYS_WIN64 : SYS_WIN32;
/*
* The following two calls return an offset or -1 if out of memory. We