Module: wine Branch: refs/heads/master Commit: ae94c2207fc5fb4afd0634ba11f7d816a4b38402 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=ae94c2207fc5fb4afd0634ba...
Author: Robert Shearman rob@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 );