Eric Kohl : widl: Support multiple interfaces per file.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Dec 12 06:44:57 CST 2005
Module: wine
Branch: refs/heads/master
Commit: 6744d4e3ea2ead8a44a6a15d5a709fdb4bff51ad
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6744d4e3ea2ead8a44a6a15d5a709fdb4bff51ad
Author: Eric Kohl <eric.kohl at 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);
}
More information about the wine-cvs
mailing list