Module: wine Branch: refs/heads/master Commit: 6744d4e3ea2ead8a44a6a15d5a709fdb4bff51ad URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6744d4e3ea2ead8a44a6a15d...
Author: Eric Kohl eric.kohl@t-online.de Date: Mon Dec 12 12:11:44 2005 +0100
widl: Support multiple interfaces per file.
---
tools/widl/client.c | 48 +++++++++++++++++++++++++++++------------------- tools/widl/server.c | 46 ++++++++++++++++++++++++++++------------------ 2 files changed, 57 insertions(+), 37 deletions(-)
diff --git a/tools/widl/client.c b/tools/widl/client.c index 6c33692..7d583a0 100644 --- a/tools/widl/client.c +++ b/tools/widl/client.c @@ -386,37 +386,47 @@ static void init_client(void)
void write_client(ifref_t *ifaces) { - ifref_t *lcur = ifaces; + ifref_t *iface = ifaces;
if (!do_client) return; - if (!lcur) + if (!iface) return; - END_OF_LIST(lcur); + END_OF_LIST(iface);
init_client(); if (!client) return;
- write_formatstringsdecl(lcur->iface); - write_implicithandledecl(lcur->iface); + while (iface) + { + fprintf(client, "/*****************************************************************************\n"); + fprintf(client, " * %s interface\n", iface->iface->name); + fprintf(client, " */\n"); + fprintf(client, "\n"); + + write_formatstringsdecl(iface->iface); + write_implicithandledecl(iface->iface); + + write_clientinterfacedecl(iface->iface); + write_stubdescdecl(iface->iface); + write_bindinghandledecl(iface->iface); + + write_function_stubs(iface->iface); + write_stubdescriptor(iface->iface); + + print_client("#if !defined(__RPC_WIN32__)\n"); + print_client("#error Invalid build platform for this stub.\n"); + print_client("#endif\n"); + fprintf(client, "\n");
- write_clientinterfacedecl(lcur->iface); - write_stubdescdecl(lcur->iface); - write_bindinghandledecl(lcur->iface); + write_procformatstring(client, iface->iface); + write_typeformatstring(client);
- write_function_stubs(lcur->iface); - write_stubdescriptor(lcur->iface); + fprintf(client, "\n");
- print_client("#if !defined(__RPC_WIN32__)\n"); - print_client("#error Invalid build platform for this stub.\n"); - print_client("#endif\n"); - fprintf(client, "\n"); - - write_procformatstring(client, lcur->iface); - write_typeformatstring(client); - - fprintf(client, "\n"); + iface = PREV_LINK(iface); + }
fclose(client); } diff --git a/tools/widl/server.c b/tools/widl/server.c index 668e492..68b46e6 100644 --- a/tools/widl/server.c +++ b/tools/widl/server.c @@ -432,36 +432,46 @@ static void init_server(void)
void write_server(ifref_t *ifaces) { - ifref_t *lcur = ifaces; + ifref_t *iface = ifaces;
if (!do_server) return; - if (!lcur) + if (!iface) return; - END_OF_LIST(lcur); + END_OF_LIST(iface);
init_server(); if (!server) return;
- write_formatstringsdecl(lcur->iface); - write_serverinterfacedecl(lcur->iface); - write_stubdescdecl(lcur->iface); + while (iface) + { + fprintf(server, "/*****************************************************************************\n"); + fprintf(server, " * %s interface\n", iface->iface->name); + fprintf(server, " */\n"); + fprintf(server, "\n"); + + write_formatstringsdecl(iface->iface); + write_serverinterfacedecl(iface->iface); + write_stubdescdecl(iface->iface); + + write_function_stubs(iface->iface); + + write_stubdescriptor(iface->iface); + write_dispatchtable(iface->iface); + + print_server("#if !defined(__RPC_WIN32__)\n"); + print_server("#error Invalid build platform for this stub.\n"); + print_server("#endif\n"); + fprintf(server, "\n");
- write_function_stubs(lcur->iface); + write_procformatstring(server, iface->iface); + write_typeformatstring(server);
- write_stubdescriptor(lcur->iface); - write_dispatchtable(lcur->iface); + fprintf(server, "\n");
- print_server("#if !defined(__RPC_WIN32__)\n"); - print_server("#error Invalid build platform for this stub.\n"); - print_server("#endif\n"); - fprintf(server, "\n"); - - write_procformatstring(server, lcur->iface); - write_typeformatstring(server); - - fprintf(server, "\n"); + iface = PREV_LINK(iface); + }
fclose(server); }