diff -pudN e:\wine-patched\tools\widl/hash.c e:\reactos-sync-clean\tools\widl/hash.c --- e:\wine-patched\tools\widl/hash.c 2015-02-22 13:23:48 +0100 +++ e:\reactos-sync-clean\tools\widl/hash.c 2013-10-15 20:06:18 +0100 @@ -21,9 +21,7 @@ #include #include -#include "windef.h" -#include "winbase.h" -#include "winnls.h" +#include #include "widltypes.h" #include "hash.h" @@ -539,10 +537,10 @@ unsigned int lhash_val_of_name_sys( sysk case LANG_VIETNAMESE: case LANG_MALTESE: case LANG_IRISH: case LANG_SAMI: case LANG_UPPER_SORBIAN: case LANG_TSWANA: case LANG_XHOSA: case LANG_ZULU: case LANG_WELSH: - case LANG_BRETON: case LANG_SCOTTISH_GAELIC: case LANG_NEUTRAL: + case LANG_BRETON: case LANG_NEUTRAL: /* some languages not in all windows versions or ReactOS */ -#ifdef LANG_MANX_GAELIC - case LANG_MANX_GAELIC: +#ifdef LANG_GAELIC + case LANG_GAELIC: #endif #ifdef LANG_TAJIK case LANG_TAJIK: diff -pudN e:\wine-patched\tools\widl/header.c e:\reactos-sync-clean\tools\widl/header.c --- e:\wine-patched\tools\widl/header.c 2015-10-30 18:41:54 +0100 +++ e:\reactos-sync-clean\tools\widl/header.c 2015-11-16 20:04:15 +0100 @@ -1068,7 +1068,7 @@ static void write_inline_wrappers(FILE * if (!is_callas(func->attrs)) { const var_t *arg; - fprintf(header, "static FORCEINLINE "); + fprintf(header, "FORCEINLINE "); write_type_decl_left(header, type_function_get_rettype(func->type)); fprintf(header, " %s_%s(", name, get_name(func)); write_args(header, type_get_function_args(func->type), name, 1, FALSE); @@ -1103,6 +1103,15 @@ static void do_write_c_method_def(FILE * if (type_iface_get_inherit(iface)) do_write_c_method_def(header, type_iface_get_inherit(iface), name); + else if (type_iface_get_stmts(iface) == NULL) + { + fprintf(header, "#ifndef __cplusplus\n"); + indent(header, 0); + fprintf(header, "char dummy;\n"); + fprintf(header, "#endif\n"); + fprintf(header, "\n"); + return; + } STATEMENTS_FOR_EACH_FUNC(stmt, type_iface_get_stmts(iface)) { @@ -1640,6 +1649,10 @@ void write_header(const statement_list_t fprintf(header, "#define __REQUIRED_RPCNDR_H_VERSION__ 475\n"); fprintf(header, "#endif\n\n"); + fprintf(header, "#ifdef __REACTOS__\n"); + fprintf(header, "#define WIN32_LEAN_AND_MEAN\n"); + fprintf(header, "#endif\n\n"); + fprintf(header, "#include \n" ); fprintf(header, "#include \n\n" ); diff -pudN e:\wine-patched\tools\widl/parser.y e:\reactos-sync-clean\tools\widl/parser.y --- e:\wine-patched\tools\widl/parser.y 2015-11-15 19:23:32 +0100 +++ e:\reactos-sync-clean\tools\widl/parser.y 2015-11-16 20:04:15 +0100 @@ -1899,6 +1899,14 @@ static type_t *reg_typedefs(decl_spec_t type->attrs = attrs; } +#ifdef __REACTOS__ + /* Append the SWITCHTYPE attribute to a non-encapsulated union if it does not already have it. */ + if (type_get_type_detect_alias(type) == TYPE_UNION && + is_attr(attrs, ATTR_SWITCHTYPE) && + !is_attr(type->attrs, ATTR_SWITCHTYPE)) + type->attrs = append_attr(type->attrs, make_attrp(ATTR_SWITCHTYPE, get_attrp(attrs, ATTR_SWITCHTYPE))); +#endif + LIST_FOR_EACH_ENTRY( decl, decls, const declarator_t, entry ) { diff -pudN e:\wine-patched\tools\widl/proxy.c e:\reactos-sync-clean\tools\widl/proxy.c --- e:\wine-patched\tools\widl/proxy.c 2015-02-22 13:23:48 +0100 +++ e:\reactos-sync-clean\tools\widl/proxy.c 2015-11-16 20:04:15 +0100 @@ -87,7 +87,13 @@ static void init_proxy(const statement_l error("Could not open %s for output\n", proxy_name); print_proxy( "/*** Autogenerated by WIDL %s from %s - Do not edit ***/\n", PACKAGE_VERSION, input_name); print_proxy( "\n"); - print_proxy( "#define __midl_proxy\n"); + print_proxy( "#define __midl_proxy\n\n"); + + print_proxy( "#ifdef __REACTOS__\n"); + print_proxy( "#define WIN32_NO_STATUS\n"); + print_proxy( "#define WIN32_LEAN_AND_MEAN\n"); + print_proxy( "#endif\n\n"); + print_proxy( "#include \"objbase.h\"\n"); print_proxy( "\n"); print_proxy( "#ifndef DECLSPEC_HIDDEN\n"); @@ -476,14 +482,15 @@ static const statement_t * get_callas_so return NULL; } -static void write_proxy_procformatstring_offsets( const type_t *iface, int skip ) +static int write_proxy_procformatstring_offsets( const type_t *iface, int skip ) { const statement_t *stmt; + int i = 0; if (type_iface_get_inherit(iface)) - write_proxy_procformatstring_offsets( type_iface_get_inherit(iface), need_delegation(iface)); + i = write_proxy_procformatstring_offsets( type_iface_get_inherit(iface), need_delegation(iface)); else - return; + return 0; STATEMENTS_FOR_EACH_FUNC( stmt, type_iface_get_stmts(iface) ) { @@ -503,7 +510,9 @@ static void write_proxy_procformatstring print_proxy( "(unsigned short)-1, /* %s::%s */\n", iface->name, get_name(func)); else print_proxy( "%u, /* %s::%s */\n", func->procstring_offset, iface->name, get_name(func)); + i++; } + return i; } static int write_proxy_methods(type_t *iface, int skip) @@ -636,7 +645,10 @@ static void write_proxy(type_t *iface, u print_proxy( "static const unsigned short %s_FormatStringOffsetTable[] =\n", iface->name ); print_proxy( "{\n" ); indent++; - write_proxy_procformatstring_offsets( iface, 0 ); + if (write_proxy_procformatstring_offsets( iface, 0 ) == 0) + { + print_proxy( "0\n" ); + } indent--; print_proxy( "};\n\n" ); @@ -710,7 +722,10 @@ static void write_proxy(type_t *iface, u print_proxy( "static const PRPC_STUB_FUNCTION %s_table[] =\n", iface->name); print_proxy( "{\n"); indent++; - write_stub_methods(iface, FALSE); + if (write_stub_methods(iface, FALSE) == 0) + { + fprintf(proxy, "0"); + } fprintf(proxy, "\n"); indent--; fprintf(proxy, "};\n\n"); diff -pudN e:\wine-patched\tools\widl/typegen.c e:\reactos-sync-clean\tools\widl/typegen.c --- e:\wine-patched\tools\widl/typegen.c 2015-10-30 18:41:54 +0100 +++ e:\reactos-sync-clean\tools\widl/typegen.c 2015-11-16 20:04:16 +0100 @@ -4747,7 +4747,7 @@ void write_func_param_struct( FILE *file if (align >= pointer_size) fprintf( file, "%s;\n", arg->name ); else - fprintf( file, "%s DECLSPEC_ALIGN(%u);\n", arg->name, pointer_size ); + fprintf( file, "DECLSPEC_ALIGN(%u) %s;\n", pointer_size, arg->name ); } if (add_retval && !is_void( retval->type )) { diff -pudN e:\wine-patched\tools\widl/typelib.c e:\reactos-sync-clean\tools\widl/typelib.c --- e:\wine-patched\tools\widl/typelib.c 2015-10-30 18:41:54 +0100 +++ e:\reactos-sync-clean\tools\widl/typelib.c 2015-11-16 20:04:16 +0100 @@ -32,9 +32,7 @@ #include #include -#include "windef.h" -#include "winbase.h" - +#include #include "widl.h" #include "utils.h" #include "parser.h" diff -pudN e:\wine-patched\tools\widl/widl.c e:\reactos-sync-clean\tools\widl/widl.c --- e:\wine-patched\tools\widl/widl.c 2015-10-30 18:41:54 +0100 +++ e:\reactos-sync-clean\tools\widl/widl.c 2015-11-16 20:04:16 +0100 @@ -364,6 +364,12 @@ static void write_dlldata_list(struct li fprintf(dlldata, "- Do not edit ***/\n\n"); if (define_proxy_delegation) fprintf(dlldata, "#define PROXY_DELEGATION\n"); + + fprintf(dlldata, "#ifdef __REACTOS__\n"); + fprintf(dlldata, "#define WIN32_NO_STATUS\n"); + fprintf(dlldata, "#define WIN32_LEAN_AND_MEAN\n"); + fprintf(dlldata, "#endif\n\n"); + fprintf(dlldata, "#include \n"); fprintf(dlldata, "#include \n\n"); start_cplusplus_guard(dlldata); @@ -504,6 +510,12 @@ void write_id_data(const statement_list_ fprintf(idfile, "/*** Autogenerated by WIDL %s ", PACKAGE_VERSION); fprintf(idfile, "from %s - Do not edit ***/\n\n", input_idl_name); + + fprintf(idfile, "#ifdef __REACTOS__\n"); + fprintf(idfile, "#define WIN32_NO_STATUS\n"); + fprintf(idfile, "#define WIN32_LEAN_AND_MEAN\n"); + fprintf(idfile, "#endif\n\n"); + fprintf(idfile, "#include \n"); fprintf(idfile, "#include \n\n"); diff -pudN e:\wine-patched\tools\widl/widltypes.h e:\reactos-sync-clean\tools\widl/widltypes.h --- e:\wine-patched\tools\widl/widltypes.h 2015-10-30 18:41:54 +0100 +++ e:\reactos-sync-clean\tools\widl/widltypes.h 2015-11-16 20:04:16 +0100 @@ -21,6 +21,15 @@ #ifndef __WIDL_WIDLTYPES_H #define __WIDL_WIDLTYPES_H +#define S_OK 0 +#define S_FALSE 1 +#define E_OUTOFMEMORY ((HRESULT)0x8007000EL) +#define TYPE_E_IOERROR ((HRESULT)0x80028CA2L) + +#ifndef max +#define max(a, b) ((a) > (b) ? a : b) +#endif + #include #include #include "guiddef.h" diff -pudN e:\wine-patched\tools\widl/write_msft.c e:\reactos-sync-clean\tools\widl/write_msft.c --- e:\wine-patched\tools\widl/write_msft.c 2015-11-15 19:23:32 +0100 +++ e:\reactos-sync-clean\tools\widl/write_msft.c 2015-11-16 20:04:16 +0100 @@ -39,10 +39,8 @@ #define NONAMELESSUNION -#include "winerror.h" -#include "windef.h" -#include "winbase.h" -#include "winnls.h" +#include +#include #include "widl.h" #include "typelib.h"