Robert Shearman : widl: Export the bracket adding functionality of do_write_expr outside

Alexandre Julliard julliard at wine.codeweavers.com
Sat Dec 31 08:20:34 CST 2005


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

Author: Robert Shearman <rob at codeweavers.com>
Date:   Sat Dec 31 13:18:49 2005 +0100

widl: Export the bracket adding functionality of do_write_expr outside
of header.c.

---

 tools/widl/header.c |   37 ++++++++++++++++---------------------
 tools/widl/header.h |    2 +-
 tools/widl/proxy.c  |    6 +++---
 3 files changed, 20 insertions(+), 25 deletions(-)

diff --git a/tools/widl/header.c b/tools/widl/header.c
index 3b85adb..a8071b1 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -189,7 +189,7 @@ static void write_enums(FILE *h, var_t *
       write_name(h, v);
       if (v->eval) {
         fprintf(h, " = ");
-        write_expr(h, v->eval);
+        write_expr(h, v->eval, 0);
       }
     }
     if (PREV_LINK(v))
@@ -399,7 +399,7 @@ void write_typedef(type_t *type, const v
   fprintf(header, ";\n");
 }
 
-static void do_write_expr(FILE *h, expr_t *e, int p)
+void write_expr(FILE *h, const expr_t *e, int brackets)
 {
   switch (e->type) {
   case EXPR_VOID:
@@ -415,21 +415,21 @@ static void do_write_expr(FILE *h, expr_
     break;
   case EXPR_NEG:
     fprintf(h, "-");
-    do_write_expr(h, e->ref, 1);
+    write_expr(h, e->ref, 1);
     break;
   case EXPR_NOT:
     fprintf(h, "~");
-    do_write_expr(h, e->ref, 1);
+    write_expr(h, e->ref, 1);
     break;
   case EXPR_PPTR:
     fprintf(h, "*");
-    do_write_expr(h, e->ref, 1);
+    write_expr(h, e->ref, 1);
     break;
   case EXPR_CAST:
     fprintf(h, "(");
     write_type(h, e->u.tref->ref, NULL, e->u.tref->name);
     fprintf(h, ")");
-    do_write_expr(h, e->ref, 1);
+    write_expr(h, e->ref, 1);
     break;
   case EXPR_SIZEOF:
     fprintf(h, "sizeof(");
@@ -444,8 +444,8 @@ static void do_write_expr(FILE *h, expr_
   case EXPR_SUB:
   case EXPR_AND:
   case EXPR_OR:
-    if (p) fprintf(h, "(");
-    do_write_expr(h, e->ref, 1);
+    if (brackets) fprintf(h, "(");
+    write_expr(h, e->ref, 1);
     switch (e->type) {
     case EXPR_SHL: fprintf(h, " << "); break;
     case EXPR_SHR: fprintf(h, " >> "); break;
@@ -457,30 +457,25 @@ static void do_write_expr(FILE *h, expr_
     case EXPR_OR:  fprintf(h, " | "); break;
     default: break;
     }
-    do_write_expr(h, e->u.ext, 1);
-    if (p) fprintf(h, ")");
+    write_expr(h, e->u.ext, 1);
+    if (brackets) fprintf(h, ")");
     break;
   case EXPR_COND:
-    if (p) fprintf(h, "(");
-    do_write_expr(h, e->ref, 1);
+    if (brackets) fprintf(h, "(");
+    write_expr(h, e->ref, 1);
     fprintf(h, " ? ");
-    do_write_expr(h, e->u.ext, 1);
+    write_expr(h, e->u.ext, 1);
     fprintf(h, " : ");
-    do_write_expr(h, e->ext2, 1);
-    if (p) fprintf(h, ")");
+    write_expr(h, e->ext2, 1);
+    if (brackets) fprintf(h, ")");
     break;
   }
 }
 
-void write_expr(FILE *h, expr_t *e)
-{
-  do_write_expr(h, e, 0);
-}
-
 void write_constdef(const var_t *v)
 {
   fprintf(header, "#define %s (", get_name(v));
-  write_expr(header, v->eval);
+  write_expr(header, v->eval, 0);
   fprintf(header, ")\n\n");
 }
 
diff --git a/tools/widl/header.h b/tools/widl/header.h
index de38a70..1a767c7 100644
--- a/tools/widl/header.h
+++ b/tools/widl/header.h
@@ -38,7 +38,7 @@ extern void write_interface(type_t *ifac
 extern void write_dispinterface(type_t *iface);
 extern void write_coclass(class_t *iface);
 extern void write_typedef(type_t *type, const var_t *names);
-extern void write_expr(FILE *h, expr_t *e);
+extern void write_expr(FILE *h, const expr_t *e, int brackets);
 extern void write_constdef(const var_t *v);
 extern void write_externdef(const var_t *v);
 extern void write_library(const char *name, attr_t *attr);
diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c
index 988f1e7..a953ff5 100644
--- a/tools/widl/proxy.c
+++ b/tools/widl/proxy.c
@@ -213,7 +213,7 @@ static void marshall_size_arg( var_t *ar
   if (expr)
   {
     print_proxy( "_StubMsg.MaxCount = ", arg->name );
-    write_expr(proxy, expr);
+    write_expr(proxy, expr, 0);
     fprintf(proxy, ";\n\n");
     print_proxy( "NdrConformantArrayBufferSize( &_StubMsg, (unsigned char*)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d]);\n", index );
@@ -305,7 +305,7 @@ static void marshall_copy_arg( var_t *ar
   if (expr)
   {
     print_proxy( "_StubMsg.MaxCount = ", arg->name );
-    write_expr(proxy, expr);
+    write_expr(proxy, expr, 0);
     fprintf(proxy, ";\n\n");
     print_proxy( "NdrConformantArrayMarshall( &_StubMsg, (unsigned char*)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d]);\n", index );
@@ -494,7 +494,7 @@ static void free_variable( var_t *arg )
   if (expr)
   {
     print_proxy( "_StubMsg.MaxCount = ", arg->name );
-    write_expr(proxy, expr);
+    write_expr(proxy, expr, 0);
     fprintf(proxy, ";\n\n");
     print_proxy( "NdrClearOutParameters( &_StubMsg, ");
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d], ", index );




More information about the wine-cvs mailing list