aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-04-20 17:13:07 +0100
committerIan Campbell <ian.campbell@citrix.com>2011-04-20 17:13:07 +0100
commitca70c225c4f5c47fd1b5399140004999bc268365 (patch)
tree18b83369bce2b921f937ba1afb48fad3a6d732fb /tools
parent59f8f46a491c9bdc1ad3e0c5ae4f8b48068d13cd (diff)
downloadxen-ca70c225c4f5c47fd1b5399140004999bc268365.tar.gz
xen-ca70c225c4f5c47fd1b5399140004999bc268365.tar.bz2
xen-ca70c225c4f5c47fd1b5399140004999bc268365.zip
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@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/libxl/gentypes.py18
-rw-r--r--tools/libxl/idl.txt7
-rw-r--r--tools/libxl/libxltypes.py18
3 files changed, 7 insertions, 36 deletions
diff --git a/tools/libxl/gentypes.py b/tools/libxl/gentypes.py
index b64ec0ccb2..e764e200af 100644
--- a/tools/libxl/gentypes.py
+++ b/tools/libxl/gentypes.py
@@ -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, reference, indent = " ", parent = None):
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 --git a/tools/libxl/idl.txt b/tools/libxl/idl.txt
index be835cd8f6..a1a3125cc4 100644
--- a/tools/libxl/idl.txt
+++ b/tools/libxl/idl.txt
@@ -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 --git a/tools/libxl/libxltypes.py b/tools/libxl/libxltypes.py
index 133d67a6c4..0c85d79879 100644
--- a/tools/libxl/libxltypes.py
+++ b/tools/libxl/libxltypes.py
@@ -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
#