Robert Shearman : widl: Support client/server generation for explicit_handle interfaces

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 31 11:23:29 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 0a2c5b73fdd64ee701e156b143a847f91ceafe5a
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=0a2c5b73fdd64ee701e156b143a847f91ceafe5a

Author: Robert Shearman <rob at 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);




More information about the wine-cvs mailing list