Dan Hipschman : widl: Allow format-string functions to work with objects.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Aug 18 05:40:28 CDT 2006


Module: wine
Branch: master
Commit: 9b16916ed13e0b26ab3f375f2deb5cb146fda1b3
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=9b16916ed13e0b26ab3f375f2deb5cb146fda1b3

Author: Dan Hipschman <dsh at linux.ucla.edu>
Date:   Thu Aug 17 18:08:38 2006 -0700

widl: Allow format-string functions to work with objects.

---

 tools/widl/client.c  |    6 +++---
 tools/widl/proxy.c   |    6 +++---
 tools/widl/server.c  |    6 +++---
 tools/widl/typegen.c |   22 +++++++++++-----------
 tools/widl/typegen.h |   10 +++++-----
 5 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/tools/widl/client.c b/tools/widl/client.c
index 3bc47b2..64cf8c5 100644
--- a/tools/widl/client.c
+++ b/tools/widl/client.c
@@ -440,7 +440,7 @@ void write_client(ifref_t *ifaces)
     if (!client)
         return;
 
-    write_formatstringsdecl(client, indent, ifaces);
+    write_formatstringsdecl(client, indent, ifaces, 0);
 
     for (; iface; iface = PREV_LINK(iface))
     {
@@ -479,8 +479,8 @@ void write_client(ifref_t *ifaces)
 
     fprintf(client, "\n");
 
-    write_procformatstring(client, ifaces);
-    write_typeformatstring(client, ifaces);
+    write_procformatstring(client, ifaces, 0);
+    write_typeformatstring(client, ifaces, 0);
 
     fclose(client);
 }
diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c
index 608c856..2c4fa10 100644
--- a/tools/widl/proxy.c
+++ b/tools/widl/proxy.c
@@ -110,7 +110,7 @@ static void init_proxy(ifref_t *ifaces)
   print_proxy( "\n");
   print_proxy( "#include \"%s\"\n", header_name);
   print_proxy( "\n");
-  write_formatstringsdecl(proxy, indent, ifaces);
+  write_formatstringsdecl(proxy, indent, ifaces, 1);
   write_stubdescproto();
 }
 
@@ -1031,8 +1031,8 @@ void write_proxies(ifref_t *ifaces)
   print_proxy( "#error Currently only Wine and WIN32 are supported.\n");
   print_proxy( "#endif\n");
   print_proxy( "\n");
-  write_procformatstring(proxy, ifaces);
-  write_typeformatstring(proxy, ifaces);
+  write_procformatstring(proxy, ifaces, 1);
+  write_typeformatstring(proxy, ifaces, 1);
 
   fprintf(proxy, "const CInterfaceProxyVtbl* _%s_ProxyVtblList[] =\n", file_id);
   fprintf(proxy, "{\n");
diff --git a/tools/widl/server.c b/tools/widl/server.c
index 69eddb8..9f6c5ac 100644
--- a/tools/widl/server.c
+++ b/tools/widl/server.c
@@ -582,7 +582,7 @@ void write_server(ifref_t *ifaces)
     if (!server)
         return;
 
-    write_formatstringsdecl(server, indent, ifaces);
+    write_formatstringsdecl(server, indent, ifaces, 0);
 
     for (; iface; iface = PREV_LINK(iface))
     {
@@ -620,8 +620,8 @@ void write_server(ifref_t *ifaces)
 
     fprintf(server, "\n");
 
-    write_procformatstring(server, ifaces);
-    write_typeformatstring(server, ifaces);
+    write_procformatstring(server, ifaces, 0);
+    write_typeformatstring(server, ifaces, 0);
 
     fclose(server);
 }
diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index 632bc8a..2d7e07f 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -142,13 +142,13 @@ static void write_formatdesc(FILE *f, in
     print_file(f, indent, "\n");
 }
 
-void write_formatstringsdecl(FILE *f, int indent, ifref_t *ifaces)
+void write_formatstringsdecl(FILE *f, int indent, ifref_t *ifaces, int for_objects)
 {
     print_file(f, indent, "#define TYPE_FORMAT_STRING_SIZE %d\n",
-               get_size_typeformatstring(ifaces));
+               get_size_typeformatstring(ifaces, for_objects));
 
     print_file(f, indent, "#define PROC_FORMAT_STRING_SIZE %d\n",
-               get_size_procformatstring(ifaces));
+               get_size_procformatstring(ifaces, for_objects));
 
     fprintf(f, "\n");
     write_formatdesc(f, indent, "TYPE");
@@ -275,7 +275,7 @@ #undef CASE_BASETYPE
     return size;
 }
 
-void write_procformatstring(FILE *file, const ifref_t *ifaces)
+void write_procformatstring(FILE *file, const ifref_t *ifaces, int for_objects)
 {
     const ifref_t *iface = ifaces;
     int indent = 0;
@@ -293,7 +293,7 @@ void write_procformatstring(FILE *file, 
 
     for (; iface; iface = PREV_LINK(iface))
     {
-        if (is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
+        if (for_objects != is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
             continue;
 
         if (iface->iface->funcs)
@@ -1385,7 +1385,7 @@ #define CASE_BASETYPE(fctype) \
 }
 
 
-void write_typeformatstring(FILE *file, const ifref_t *ifaces)
+void write_typeformatstring(FILE *file, const ifref_t *ifaces, int for_objects)
 {
     int indent = 0;
     var_t *var;
@@ -1405,7 +1405,7 @@ void write_typeformatstring(FILE *file, 
 
     for (; iface; iface = PREV_LINK(iface))
     {
-        if (is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
+        if (for_objects != is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
             continue;
 
         if (iface->iface->funcs)
@@ -1900,7 +1900,7 @@ size_t get_size_typeformatstring_var(con
     return type_offset;
 }
 
-size_t get_size_procformatstring(const ifref_t *ifaces)
+size_t get_size_procformatstring(const ifref_t *ifaces, int for_objects)
 {
     const ifref_t *iface = ifaces;
     size_t size = 1;
@@ -1911,7 +1911,7 @@ size_t get_size_procformatstring(const i
 
     for (; iface; iface = PREV_LINK(iface))
     {
-        if (is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
+        if (for_objects != is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
             continue;
 
         if (iface->iface->funcs)
@@ -1946,7 +1946,7 @@ size_t get_size_procformatstring(const i
     return size;
 }
 
-size_t get_size_typeformatstring(const ifref_t *ifaces)
+size_t get_size_typeformatstring(const ifref_t *ifaces, int for_objects)
 {
     const ifref_t *iface = ifaces;
     size_t size = 3;
@@ -1957,7 +1957,7 @@ size_t get_size_typeformatstring(const i
 
     for (; iface; iface = PREV_LINK(iface))
     {
-        if (is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
+        if (for_objects != is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
             continue;
 
         if (iface->iface->funcs)
diff --git a/tools/widl/typegen.h b/tools/widl/typegen.h
index 4509032..d4885fb 100644
--- a/tools/widl/typegen.h
+++ b/tools/widl/typegen.h
@@ -35,16 +35,16 @@ enum remoting_phase
     PHASE_FREE
 };
 
-void write_formatstringsdecl(FILE *f, int indent, ifref_t *ifaces);
-void write_procformatstring(FILE *file, const ifref_t *ifaces);
-void write_typeformatstring(FILE *file, const ifref_t *ifaces);
+void write_formatstringsdecl(FILE *f, int indent, ifref_t *ifaces, int for_objects);
+void write_procformatstring(FILE *file, const ifref_t *ifaces, int for_objects);
+void write_typeformatstring(FILE *file, const ifref_t *ifaces, int for_objects);
 size_t get_type_memsize(const type_t *type);
 unsigned int get_required_buffer_size(const var_t *var, unsigned int *alignment, enum pass pass);
 void print_phase_basetype(FILE *file, int indent, enum remoting_phase phase, enum pass pass, const var_t *var, const char *varname);
 void write_remoting_arguments(FILE *file, int indent, const func_t *func, unsigned int *type_offset, enum pass pass, enum remoting_phase phase);
 size_t get_size_procformatstring_var(const var_t *var);
 size_t get_size_typeformatstring_var(const var_t *var);
-size_t get_size_procformatstring(const ifref_t *ifaces);
-size_t get_size_typeformatstring(const ifref_t *ifaces);
+size_t get_size_procformatstring(const ifref_t *ifaces, int for_objects);
+size_t get_size_typeformatstring(const ifref_t *ifaces, int for_objects);
 int write_expr_eval_routines(FILE *file, const char *iface);
 void write_expr_eval_routine_list(FILE *file, const char *iface);




More information about the wine-cvs mailing list