Module: wine Branch: refs/heads/master Commit: 0a2c5b73fdd64ee701e156b143a847f91ceafe5a URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=0a2c5b73fdd64ee701e156b1...
Author: Robert Shearman rob@codeweavers.com Date: Tue Jan 31 18:06:17 2006 +0100
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 deletions(-)
diff --git a/tools/widl/header.c b/tools/widl/header.c index a8071b1..ef77308 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -509,7 +509,7 @@ var_t* get_explicit_handle_var(func_t* f 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 2f7824a..221a06c 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -936,6 +936,10 @@ static size_t write_typeformatstring_var 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_ *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 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, in 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);