[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 26 of 32] tools: libxl: remove Reference meta-type from IDL



# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1303315987 -3600
# Node ID 3c08d944bc2485f99b16c4e923e2731307cfa623
# Parent  a560df9ad19d5b3ca409c325f0a498e31647efaa
tools: libxl: remove Reference meta-type from IDL

It is tricky to map to language bindings and is now unused in any case.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

diff -r a560df9ad19d -r 3c08d944bc24 tools/libxl/gentypes.py
--- a/tools/libxl/gentypes.py   Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/gentypes.py   Wed Apr 20 17:13:07 2011 +0100
@@ -78,13 +78,13 @@ def libxl_C_type_define(ty, indent = "")
         raise NotImplementedError("%s" % type(ty))
     return s.replace("\n", "\n%s" % indent)
 
-def libxl_C_type_destroy(ty, v, reference, indent = "    ", parent = None):
-    if reference:
+def libxl_C_type_destroy(ty, v, indent = "    ", parent = None):
+    if parent is None:
         deref = v + "->"
     else:
         deref = v + "."
         
-    if ty.passby == libxltypes.PASS_BY_REFERENCE and not reference:
+    if ty.passby == libxltypes.PASS_BY_REFERENCE and parent is not None:
         makeref = "&"
     else:
         makeref = ""
@@ -96,19 +96,15 @@ def libxl_C_type_destroy(ty, v, referenc
         for f in ty.fields:
             keyvar_expr = f.keyvar_expr % (parent + ty.keyvar_name)
             s += "if (" + keyvar_expr + ") {\n"
-            s += libxl_C_type_destroy(f.type, deref + f.name, False, indent + 
"    ", deref)
+            s += libxl_C_type_destroy(f.type, deref + f.name, indent + "    ", 
deref)
             s += "}\n"
-    elif isinstance(ty, libxltypes.Reference):
-        s += libxl_C_type_destroy(ty.ref_type, v, True, indent, v)
-        if ty.destructor_fn is not None:
-            s += "%s(%s);\n" % (ty.destructor_fn, makeref + v)
     elif isinstance(ty, libxltypes.Struct) and (parent is None or 
ty.destructor_fn is None):
         for f in [f for f in ty.fields if not f.const]:
 
             if f.name is None: # Anonynous struct
-                s += libxl_C_type_destroy(f.type, deref, False, "", deref)
+                s += libxl_C_type_destroy(f.type, deref, "", deref)
             else:
-                s += libxl_C_type_destroy(f.type, deref + f.name, False, "", 
deref)
+                s += libxl_C_type_destroy(f.type, deref + f.name, "", deref)
     else:
         if ty.destructor_fn is not None:
             s += "%s(%s);\n" % (ty.destructor_fn, makeref + v)
@@ -177,7 +173,7 @@ if __name__ == '__main__':
     for ty in [t for t in types if t.destructor_fn is not None and 
t.autogenerate_destructor]:
         f.write("void %s(%s *p)\n" % (ty.destructor_fn, ty.typename))
         f.write("{\n")
-        f.write(libxl_C_type_destroy(ty, "p", True))
+        f.write(libxl_C_type_destroy(ty, "p"))
         f.write("    memset(p, LIBXL_DTOR_POISON, sizeof(*p));\n")
         f.write("}\n")
         f.write("\n")
diff -r a560df9ad19d -r 3c08d944bc24 tools/libxl/idl.txt
--- a/tools/libxl/idl.txt       Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/idl.txt       Wed Apr 20 17:13:07 2011 +0100
@@ -64,13 +64,6 @@ libxltype.UInt
  The <N> for a given instance must be passed to the constructor and is
  then available in UInt.width
 
-libxltype.Reference
-
- Instances of this type represent a reference to another type
-
- The referant type must be passed to the constructor and is then
- available in Reference.ref_type
-
 Complex type-Classes
 --------------------
 
diff -r a560df9ad19d -r 3c08d944bc24 tools/libxl/libxltypes.py
--- a/tools/libxl/libxltypes.py Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/libxltypes.py Wed Apr 20 17:13:07 2011 +0100
@@ -153,24 +153,6 @@ class KeyedUnion(Aggregate):
             n, kve, ty = f
             self.fields.append(Field(ty, n, keyvar_expr=kve))
 
-class Reference(Type):
-    """A reference to another type"""
-    def __init__(self, ty, **kwargs):
-        self.ref_type = ty
-        
-        # Ugh
-        
-        kwargs.setdefault('destructor_fn', "free")
-        kwargs.setdefault('autogenerate_destructor', False)
-        kwargs.setdefault('passby', PASS_BY_VALUE)
-        
-        kwargs.setdefault('namespace', ty.namespace)
-
-        typename = ty.typename
-        if ty.namespace:
-            typename = typename[len(kwargs['namespace']):]
-        Type.__init__(self, typename + " *", **kwargs)
-
 #
 # Standard Types
 #

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.