From 0a2c5b73fdd64ee701e156b143a847f91ceafe5a Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Tue, 31 Jan 2006 18:06:17 +0100 Subject: [PATCH] widl: Support client/server generation for explicit_handle interfaces (based on a patch by Eric Kohl). --- tools/widl/header.c | 2 +- tools/widl/typegen.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/widl/header.c b/tools/widl/header.c index a8071b13df5..ef77308160d 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -509,7 +509,7 @@ var_t* get_explicit_handle_var(func_t* func) while (NEXT_LINK(var)) var = NEXT_LINK(var); while (var) { - if (var->type->type == RPC_FC_IGNORE) + if (var->type->type == RPC_FC_BIND_PRIMITIVE) return var; var = PREV_LINK(var); diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 2f7824a87dc..221a06c69ff 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -936,6 +936,10 @@ static size_t write_typeformatstring_var(FILE *file, int indent, case RPC_FC_ENCAPSULATED_UNION: case RPC_FC_NON_ENCAPSULATED_UNION: return write_union_tfs(file, var->attrs, type, var->name, typeformat_offset); + case RPC_FC_IGNORE: + case RPC_FC_BIND_PRIMITIVE: + /* nothing to do */ + return 0; default: error("write_typeformatstring_var: Unsupported type 0x%x for variable %s\n", type->type, var->name); } @@ -1071,6 +1075,10 @@ static unsigned int get_required_buffer_size_type( *alignment = 8; return 8; + case RPC_FC_IGNORE: + case RPC_FC_BIND_PRIMITIVE: + return 0; + case RPC_FC_STRUCT: { size_t size = 0; @@ -1268,6 +1276,10 @@ void marshall_arguments(FILE *file, int indent, func_t *func, case RPC_FC_BOGUS_STRUCT: ndrtype = "ComplexStruct"; break; + case RPC_FC_IGNORE: + case RPC_FC_BIND_PRIMITIVE: + /* no marshalling needed */ + continue; default: error("marshall_arguments: Unsupported type: %s (0x%02x, ptr_level: %d)\n", var->name, var->type->type, var->ptr_level); @@ -1439,6 +1451,10 @@ void unmarshall_arguments(FILE *file, int indent, func_t *func, case RPC_FC_BOGUS_STRUCT: ndrtype = "ComplexStruct"; break; + case RPC_FC_IGNORE: + case RPC_FC_BIND_PRIMITIVE: + /* no unmarshalling needed */ + continue; default: error("unmarshall_arguments: Unsupported type: %s (0x%02x, ptr_level: %d)\n", var->name, var->type->type, var->ptr_level);