Alexandre Julliard : widl: Duplicate all the proxy data tables between 32-bit and 64-bit.
Alexandre Julliard
julliard at winehq.org
Mon Oct 25 10:58:17 CDT 2010
Module: wine
Branch: master
Commit: 575485c6e71d95a038e1a065f6106e7000e39254
URL: http://source.winehq.org/git/wine.git/?a=commit;h=575485c6e71d95a038e1a065f6106e7000e39254
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Oct 22 19:41:07 2010 +0200
widl: Duplicate all the proxy data tables between 32-bit and 64-bit.
---
tools/widl/proxy.c | 99 +++++++++++++++++++++++++--------------------------
1 files changed, 49 insertions(+), 50 deletions(-)
diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c
index 8cbdf8f..ca0717b 100644
--- a/tools/widl/proxy.c
+++ b/tools/widl/proxy.c
@@ -114,20 +114,6 @@ static void init_proxy(const statement_list_t *stmts)
print_proxy( "#define DECLSPEC_HIDDEN\n");
print_proxy( "#endif\n");
print_proxy( "\n");
- write_exceptions( proxy );
- print_proxy( "\n");
- print_proxy( "struct __proxy_frame\n");
- print_proxy( "{\n");
- print_proxy( " __DECL_EXCEPTION_FRAME\n");
- print_proxy( " MIDL_STUB_MESSAGE _StubMsg;\n");
- print_proxy( " void *This;\n");
- print_proxy( "};\n");
- print_proxy( "\n");
- print_proxy("static int __proxy_filter( struct __proxy_frame *__frame )\n");
- print_proxy( "{\n");
- print_proxy( " return (__frame->_StubMsg.dwStubPhase != PROXY_SENDRECEIVE);\n");
- print_proxy( "}\n");
- print_proxy( "\n");
}
static void clear_output_vars( const var_list_t *args )
@@ -775,6 +761,25 @@ static void write_proxy_routines(const statement_list_t *stmts)
{
int expr_eval_routines;
unsigned int proc_offset = 0;
+ char *file_id = proxy_token;
+ int i, count, have_baseiid;
+ type_t **interfaces;
+ const type_t * delegate_to;
+
+ write_exceptions( proxy );
+ print_proxy( "\n");
+ print_proxy( "struct __proxy_frame\n");
+ print_proxy( "{\n");
+ print_proxy( " __DECL_EXCEPTION_FRAME\n");
+ print_proxy( " MIDL_STUB_MESSAGE _StubMsg;\n");
+ print_proxy( " void *This;\n");
+ print_proxy( "};\n");
+ print_proxy( "\n");
+ print_proxy("static int __proxy_filter( struct __proxy_frame *__frame )\n");
+ print_proxy( "{\n");
+ print_proxy( " return (__frame->_StubMsg.dwStubPhase != PROXY_SENDRECEIVE);\n");
+ print_proxy( "}\n");
+ print_proxy( "\n");
write_formatstringsdecl(proxy, indent, stmts, need_proxy);
write_stubdescproto();
@@ -793,42 +798,6 @@ static void write_proxy_routines(const statement_list_t *stmts)
write_procformatstring(proxy, stmts, need_proxy);
write_typeformatstring(proxy, stmts, need_proxy);
-}
-
-void write_proxies(const statement_list_t *stmts)
-{
- char *file_id = proxy_token;
- int i, count, have_baseiid;
- type_t **interfaces;
- const type_t * delegate_to;
-
- if (!do_proxies) return;
- if (do_everything && !need_proxy_file(stmts)) return;
-
- 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, "#endif /* _WIN64 */\n\n");
- }
- else if (do_win32)
- {
- pointer_size = 4;
- write_proxy_routines( stmts );
- }
- else if (do_win64)
- {
- pointer_size = 8;
- write_proxy_routines( stmts );
- }
-
interfaces = sort_interfaces(stmts, &count);
fprintf(proxy, "static const CInterfaceProxyVtbl* const _%s_ProxyVtblList[] =\n", file_id);
fprintf(proxy, "{\n");
@@ -901,6 +870,36 @@ void write_proxies(const statement_list_t *stmts)
fprintf(proxy, " 0,\n");
fprintf(proxy, " 0\n");
fprintf(proxy, "};\n");
+}
+
+void write_proxies(const statement_list_t *stmts)
+{
+ if (!do_proxies) return;
+ if (do_everything && !need_proxy_file(stmts)) return;
+
+ 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 );
+ }
fclose(proxy);
}
More information about the wine-cvs
mailing list