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