Robert Shearman : widl: Add framework for generating struct and union type format strings.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 24 06:45:11 CST 2006


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

Author: Robert Shearman <rob at codeweavers.com>
Date:   Tue Jan 24 11:10:59 2006 +0100

widl: Add framework for generating struct and union type format strings.

---

 tools/widl/typegen.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index fe2da2d..4fe349d 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -629,6 +629,18 @@ static size_t write_array_tfs(FILE *file
     }
 }
 
+static size_t write_struct_tfs(FILE *file, const type_t *type, const char *name)
+{
+    error("write_struct_tfs: Unimplemented\n");
+    return 0;
+}
+
+static size_t write_union_tfs(FILE *file, const attr_t *attrs, const type_t *type, const char *name)
+{
+    error("write_union_tfs: Unimplemented\n");
+    return 0;
+}
+
 static size_t write_typeformatstring_var(FILE *file, int indent,
     const var_t *var)
 {
@@ -656,6 +668,22 @@ static size_t write_typeformatstring_var
             /* basic types don't need a type format string */
             if (is_base_type(type->type))
                 return 0;
+
+            switch (type->type)
+            {
+            case RPC_FC_STRUCT:
+            case RPC_FC_PSTRUCT:
+            case RPC_FC_CSTRUCT:
+            case RPC_FC_CPSTRUCT:
+            case RPC_FC_CVSTRUCT:
+            case RPC_FC_BOGUS_STRUCT:
+                return write_struct_tfs(file, type, var->name);
+            case RPC_FC_ENCAPSULATED_UNION:
+            case RPC_FC_NON_ENCAPSULATED_UNION:
+                return write_union_tfs(file, var->attrs, type, var->name);
+            default:
+                error("write_typeformatstring_var: Unsupported type 0x%x for variable %s\n", type->type, var->name);
+            }
         }
         else if (ptr_level == 1 && !type_has_ref(type))
         {




More information about the wine-cvs mailing list