Alexandre Julliard : widl: Change write_type_def_or_decl and write_type_decl to take an argument name instead of a printf format .

Alexandre Julliard julliard at winehq.org
Tue Feb 10 07:45:26 CST 2009


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Feb 10 12:32:36 2009 +0100

widl: Change write_type_def_or_decl and write_type_decl to take an argument name instead of a printf format.

---

 tools/widl/header.c  |   33 ++++++++++++---------------------
 tools/widl/header.h  |    4 ++--
 tools/widl/typegen.c |    4 +++-
 3 files changed, 17 insertions(+), 24 deletions(-)

diff --git a/tools/widl/header.c b/tools/widl/header.c
index 41fcb96..f86d2b0 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -149,7 +149,7 @@ static void write_field(FILE *h, var_t *v)
   if (!v) return;
   if (v->type) {
     indent(h, 0);
-    write_type_def_or_decl(h, v->type, TRUE, "%s", v->name);
+    write_type_def_or_decl(h, v->type, TRUE, v->name);
     fprintf(h, ";\n");
   }
 }
@@ -278,8 +278,7 @@ void write_type_right(FILE *h, type_t *t, int is_field)
   }
 }
 
-void write_type_v(FILE *h, type_t *t, int is_field, int declonly,
-                  const char *fmt, va_list args)
+static void write_type_v(FILE *h, type_t *t, int is_field, int declonly, const char *name)
 {
   type_t *pt;
   int ptr_level = 0;
@@ -302,11 +301,9 @@ void write_type_v(FILE *h, type_t *t, int is_field, int declonly,
       fputc('*', h);
   } else
     write_type_left(h, t, declonly);
-  if (fmt) {
-    if (needs_space_after(t))
-      fputc(' ', h);
-    vfprintf(h, fmt, args);
-  }
+
+  if (name) fprintf(h, "%s%s", needs_space_after(t) ? " " : "", name );
+
   if (pt->type == RPC_FC_FUNCTION) {
     if (ptr_level) fputc(')', h);
     fputc('(', h);
@@ -316,20 +313,14 @@ void write_type_v(FILE *h, type_t *t, int is_field, int declonly,
     write_type_right(h, t, is_field);
 }
 
-void write_type_def_or_decl(FILE *f, type_t *t, int field, const char *fmt, ...)
+void write_type_def_or_decl(FILE *f, type_t *t, int field, const char *name)
 {
-  va_list args;
-  va_start(args, fmt);
-  write_type_v(f, t, field, FALSE, fmt, args);
-  va_end(args);
+  write_type_v(f, t, field, FALSE, name);
 }
 
-void write_type_decl(FILE *f, type_t *t, const char *fmt, ...)
+void write_type_decl(FILE *f, type_t *t, const char *name)
 {
-  va_list args;
-  va_start(args, fmt);
-  write_type_v(f, t, FALSE, TRUE, fmt, args);
-  va_end(args);
+  write_type_v(f, t, FALSE, TRUE, name);
 }
 
 void write_type_decl_left(FILE *f, type_t *t)
@@ -471,7 +462,7 @@ static void write_generic_handle_routines(FILE *header)
 static void write_typedef(FILE *header, type_t *type)
 {
   fprintf(header, "typedef ");
-  write_type_def_or_decl(header, type_alias_get_aliasee(type), FALSE, "%s", type->name);
+  write_type_def_or_decl(header, type_alias_get_aliasee(type), FALSE, type->name);
   fprintf(header, ";\n");
 }
 
@@ -515,7 +506,7 @@ static void write_declaration(FILE *header, const var_t *v)
         fprintf(header, "extern ");
         break;
     }
-    write_type_def_or_decl(header, v->type, FALSE, "%s", v->name);
+    write_type_def_or_decl(header, v->type, FALSE, v->name);
     fprintf(header, ";\n\n");
   }
 }
@@ -677,7 +668,7 @@ void write_args(FILE *h, const var_list_t *args, const char *name, int method, i
         }
         else fprintf(h, ",");
     }
-    write_type_decl(h, arg->type, "%s", arg->name);
+    write_type_decl(h, arg->type, arg->name);
     count++;
   }
   if (do_indent) indentation--;
diff --git a/tools/widl/header.h b/tools/widl/header.h
index 7829e09..0c0c0a4 100644
--- a/tools/widl/header.h
+++ b/tools/widl/header.h
@@ -34,8 +34,8 @@ extern int is_declptr(const type_t *t);
 extern const char* get_name(const var_t *v);
 extern void write_type_left(FILE *h, type_t *t, int declonly);
 extern void write_type_right(FILE *h, type_t *t, int is_field);
-extern void write_type_def_or_decl(FILE *h, type_t *t, int is_field, const char *fmt, ...) __attribute__((format (printf, 4, 5)));
-extern void write_type_decl(FILE *f, type_t *t, const char *fmt, ...) __attribute__((format (printf, 3, 4)));
+extern void write_type_def_or_decl(FILE *h, type_t *t, int is_field, const char *name);
+extern void write_type_decl(FILE *f, type_t *t, const char *name);
 extern void write_type_decl_left(FILE *f, type_t *t);
 extern int needs_space_after(type_t *t);
 extern int is_object(const attr_list_t *list);
diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index 9bf348f..89b7ccf 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -3383,12 +3383,14 @@ void declare_stub_args( FILE *file, int indent, const var_t *func )
             if (!in_attr && !is_conformant_array(var->type) && !is_string)
             {
                 type_t *type_to_print;
+                char name[16];
                 print_file(file, indent, "%s", "");
                 if (var->type->declarray)
                     type_to_print = var->type;
                 else
                     type_to_print = type_pointer_get_ref(var->type);
-                write_type_decl(file, type_to_print, "_W%u", i++);
+                sprintf(name, "_W%u", i++);
+                write_type_decl(file, type_to_print, name);
                 fprintf(file, ";\n");
             }
 




More information about the wine-cvs mailing list