From 9b16916ed13e0b26ab3f375f2deb5cb146fda1b3 Mon Sep 17 00:00:00 2001 From: Dan Hipschman Date: Thu, 17 Aug 2006 18:08:38 -0700 Subject: [PATCH] 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 3bc47b2c963..64cf8c52c33 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 608c85602ea..2c4fa102663 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 69eddb87350..9f6c5ac932d 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 632bc8ab936..2d7e07f62d9 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -142,13 +142,13 @@ static void write_formatdesc(FILE *f, int indent, const char *str) 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 @@ static size_t write_procformatstring_var(FILE *file, int indent, 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, const ifref_t *ifaces) 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 @@ static size_t write_typeformatstring_var(FILE *file, int indent, } -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, const ifref_t *ifaces) 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(const var_t *var) 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 ifref_t *ifaces) 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 ifref_t *ifaces) 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 ifref_t *ifaces) 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 45090326a2d..d4885fb6dd5 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);