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

[Xen-devel] [PATCH 24 of 26 V3] libxl: Make IDL KeyedUnion keyvar an idl.Field



# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1330000278 0
# Node ID 7c9766bee67645daf47b08b578639025f3427c24
# Parent  36a4fefcb0c78946a81c93c68302c9344a603f06
libxl: Make IDL KeyedUnion keyvar an idl.Field

This is more logical than having keyvar_name and keyvar_type members.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

diff -r 36a4fefcb0c7 -r 7c9766bee676 tools/libxl/gentest.py
--- a/tools/libxl/gentest.py    Thu Feb 23 12:31:18 2012 +0000
+++ b/tools/libxl/gentest.py    Thu Feb 23 12:31:18 2012 +0000
@@ -31,7 +31,7 @@ def gen_rand_init(ty, v, indent = "    "
     elif isinstance(ty, idl.KeyedUnion):
         if parent is None:
             raise Exception("KeyedUnion type must have a parent")
-        s += "switch (%s) {\n" % (parent + ty.keyvar_name)
+        s += "switch (%s) {\n" % (parent + ty.keyvar.name)
         for f in ty.fields:
             (nparent,fexpr) = ty.member(v, f, parent is None)
             s += "case %s:\n" % f.enumname
diff -r 36a4fefcb0c7 -r 7c9766bee676 tools/libxl/gentypes.py
--- a/tools/libxl/gentypes.py   Thu Feb 23 12:31:18 2012 +0000
+++ b/tools/libxl/gentypes.py   Thu Feb 23 12:31:18 2012 +0000
@@ -56,7 +56,7 @@ def libxl_C_type_dispose(ty, v, indent =
     if isinstance(ty, idl.KeyedUnion):
         if parent is None:
             raise Exception("KeyedUnion type must have a parent")
-        s += "switch (%s) {\n" % (parent + ty.keyvar_name)
+        s += "switch (%s) {\n" % (parent + ty.keyvar.name)
         for f in ty.fields:
             (nparent,fexpr) = ty.member(v, f, parent is None)
             s += "case %s:\n" % f.enumname
@@ -86,7 +86,7 @@ def libxl_C_type_gen_json(ty, v, indent 
     elif isinstance(ty, idl.KeyedUnion):
         if parent is None:
             raise Exception("KeyedUnion type must have a parent")
-        s += "switch (%s) {\n" % (parent + ty.keyvar_name)
+        s += "switch (%s) {\n" % (parent + ty.keyvar.name)
         for f in ty.fields:
             (nparent,fexpr) = ty.member(v, f, parent is None)
             s += "case %s:\n" % f.enumname
diff -r 36a4fefcb0c7 -r 7c9766bee676 tools/libxl/idl.py
--- a/tools/libxl/idl.py        Thu Feb 23 12:31:18 2012 +0000
+++ b/tools/libxl/idl.py        Thu Feb 23 12:31:18 2012 +0000
@@ -206,8 +206,9 @@ class KeyedUnion(Aggregate):
         if not isinstance(keyvar_type, Enumeration):
             raise ValueError
 
-        self.keyvar_name = keyvar_name
-        self.keyvar_type = keyvar_type
+        kv_kwargs = dict([(x.lstrip('keyvar_'),y) for (x,y) in kwargs.items() 
if x.startswith('keyvar_')])
+        
+        self.keyvar = Field(keyvar_type, keyvar_name, **kv_kwargs)
 
         for f in fields:
             # (name, enum, type)
diff -r 36a4fefcb0c7 -r 7c9766bee676 tools/libxl/idl.txt
--- a/tools/libxl/idl.txt       Thu Feb 23 12:31:18 2012 +0000
+++ b/tools/libxl/idl.txt       Thu Feb 23 12:31:18 2012 +0000
@@ -128,10 +128,9 @@ idl.KeyedUnion
  where the currently valid member of the union can be determined based
  upon another member in the containing type.
 
- The KeyedUnion.keyvar_name must contain the name of the member of the
+ The KeyedUnion.keyvar contains an idl.type the member of the
  containing type which determines the valid member of the union. The
- member referenced by KeyedUnion.keyvar_name has type
- KeyedUnion.keyvar_type which must be an instance of the Enumeration type.
+ must be an instance of the Enumeration type.
 
 Standard Types
 --------------

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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