Robert Shearman : widl: Use a macro to write out FC types,
along with the current offset
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jan 31 06:04:29 CST 2006
Module: wine
Branch: refs/heads/master
Commit: cf1ccfb7129c432316f6450f88975ef6f6e1083f
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=cf1ccfb7129c432316f6450f88975ef6f6e1083f
Author: Robert Shearman <rob at codeweavers.com>
Date: Tue Jan 31 12:25:54 2006 +0100
widl: Use a macro to write out FC types, along with the current offset
which is useful for debugging.
---
tools/widl/typegen.c | 38 +++++++++++++++++++++++---------------
1 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index f6a619a..f03cef3 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -108,6 +108,14 @@ static int compare_expr(const expr_t *a,
return -1;
}
+#define WRITE_FCTYPE(file, fctype, typestring_offset) \
+ do { \
+ if (file) \
+ fprintf(file, "/* %2u */\n", typestring_offset); \
+ print_file((file), 2, "0x%02x, /* " #fctype " */\n", RPC_##fctype); \
+ } \
+ while (0)
+
static int print_file(FILE *file, int indent, const char *format, ...)
{
va_list va;
@@ -568,9 +576,9 @@ static size_t write_string_tfs(FILE *fil
name, USHRT_MAX, array->cval - USHRT_MAX);
if (type->type == RPC_FC_CHAR)
- print_file(file, 2, "0x%x, /* FC_CSTRING */\n", RPC_FC_C_CSTRING);
+ WRITE_FCTYPE(file, FC_CSTRING, typestring_offset);
else
- print_file(file, 2, "0x%x, /* FC_WSTRING */\n", RPC_FC_C_WSTRING);
+ WRITE_FCTYPE(file, FC_WSTRING, typestring_offset);
print_file(file, 2, "0x%x, /* FC_PAD */\n", RPC_FC_PAD);
typestring_size = 2;
@@ -584,9 +592,9 @@ static size_t write_string_tfs(FILE *fil
size_t typestring_size;
if (type->type == RPC_FC_CHAR)
- print_file(file, 2, "0x%x, /* FC_C_CSTRING */\n", RPC_FC_C_CSTRING);
+ WRITE_FCTYPE(file, FC_C_CSTRING, typestring_offset);
else
- print_file(file, 2, "0x%x, /* FC_C_WSTRING */\n", RPC_FC_C_WSTRING);
+ WRITE_FCTYPE(file, FC_C_WSTRING, typestring_offset);
print_file(file, 2, "0x%x, /* FC_STRING_SIZED */\n", RPC_FC_STRING_SIZED);
typestring_size = 2;
@@ -599,9 +607,9 @@ static size_t write_string_tfs(FILE *fil
size_t typestring_size;
if (type->type == RPC_FC_CHAR)
- print_file(file, 2, "0x%x, /* FC_C_CSTRING */\n", RPC_FC_C_CSTRING);
+ WRITE_FCTYPE(file, FC_C_CSTRING, typestring_offset);
else
- print_file(file, 2, "0x%x, /* FC_C_WSTRING */\n", RPC_FC_C_WSTRING);
+ WRITE_FCTYPE(file, FC_C_WSTRING, typestring_offset);
print_file(file, 2, "0x%x, /* FC_PAD */\n", RPC_FC_PAD);
typestring_size = 2;
@@ -634,7 +642,7 @@ static size_t write_array_tfs(FILE *file
size_t size = type_memsize(type, 0, array);
if (size < USHRT_MAX)
{
- print_file(file, 2, "0x%x, /* FC_SMFARRAY */\n", RPC_FC_SMFARRAY);
+ WRITE_FCTYPE(file, FC_SMFARRAY, typestring_offset);
/* alignment */
print_file(file, 2, "0x%x, /* 0 */\n", 0);
/* size */
@@ -643,7 +651,7 @@ static size_t write_array_tfs(FILE *file
}
else
{
- print_file(file, 2, "0x%x, /* FC_LGFARRAY */\n", RPC_FC_LGFARRAY);
+ WRITE_FCTYPE(file, FC_LGFARRAY, typestring_offset);
/* alignment */
print_file(file, 2, "0x%x, /* 0 */\n", 0);
/* size */
@@ -669,7 +677,7 @@ static size_t write_array_tfs(FILE *file
if (total_size < USHRT_MAX)
{
- print_file(file, 2, "0x%x, /* FC_SMVARRAY */\n", RPC_FC_SMVARRAY);
+ WRITE_FCTYPE(file, FC_SMVARRAY, typestring_offset);
/* alignment */
print_file(file, 2, "0x%x, /* 0 */\n", 0);
/* total size */
@@ -680,7 +688,7 @@ static size_t write_array_tfs(FILE *file
}
else
{
- print_file(file, 2, "0x%x, /* FC_LGVARRAY */\n", RPC_FC_LGVARRAY);
+ WRITE_FCTYPE(file, FC_LGVARRAY, typestring_offset);
/* alignment */
print_file(file, 2, "0x%x, /* 0 */\n", 0);
/* total size */
@@ -711,7 +719,7 @@ static size_t write_array_tfs(FILE *file
size_t typestring_size;
size_t element_size = type_memsize(type, 0, NULL);
- print_file(file, 2, "0x%x, /* FC_CARRAY */\n", RPC_FC_CARRAY);
+ WRITE_FCTYPE(file, FC_CARRAY, typestring_offset);
/* alignment */
print_file(file, 2, "0x%x, /* 0 */\n", 0);
/* element size */
@@ -735,7 +743,7 @@ static size_t write_array_tfs(FILE *file
size_t typestring_size;
size_t element_size = type_memsize(type, 0, NULL);
- print_file(file, 2, "0x%x, /* FC_CARRAY */\n", RPC_FC_CARRAY);
+ WRITE_FCTYPE(file, FC_CVARRAY, typestring_offset);
/* alignment */
print_file(file, 2, "0x%x, /* 0 */\n", 0);
/* element size */
@@ -789,7 +797,7 @@ static size_t write_struct_tfs(FILE *fil
error("structure size for parameter %s exceeds %d bytes by %d bytes\n",
name, USHRT_MAX, total_size - USHRT_MAX);
- print_file(file, 2, "0x%x, /* %s */\n", RPC_FC_STRUCT, "FC_STRUCT");
+ WRITE_FCTYPE(file, FC_STRUCT, typestring_offset);
/* alignment */
print_file(file, 2, "0x0,\n");
/* total size */
@@ -809,7 +817,7 @@ static size_t write_struct_tfs(FILE *fil
error("structure size for parameter %s exceeds %d bytes by %d bytes\n",
name, USHRT_MAX, total_size - USHRT_MAX);
- print_file(file, 2, "0x%x, /* %s */\n", RPC_FC_CSTRUCT, "FC_CSTRUCT");
+ WRITE_FCTYPE(file, FC_CSTRUCT, typestring_offset);
/* alignment */
print_file(file, 2, "0x0,\n");
/* total size */
@@ -834,7 +842,7 @@ static size_t write_struct_tfs(FILE *fil
error("structure size for parameter %s exceeds %d bytes by %d bytes\n",
name, USHRT_MAX, total_size - USHRT_MAX);
- print_file(file, 2, "0x%x, /* %s */\n", RPC_FC_CVSTRUCT, "FC_CVSTRUCT");
+ WRITE_FCTYPE(file, FC_CVSTRUCT, typestring_offset);
/* alignment */
print_file(file, 2, "0x0,\n");
/* total size */
More information about the wine-cvs
mailing list