Ian Campbell
2012-Nov-20 17:23 UTC
[PATCH 05 of 15] libxl: ocaml: support for Arrays in bindings generator
# HG changeset patch # User Ian Campbell <ijc@hellion.org.uk> # Date 1353432141 0 # Node ID b7e2cd4a03f278c9abfec0812c88234f7e493646 # Parent be294b1cdd00dac5d3a1b42faf06656902b99e5b libxl: ocaml: support for Arrays in bindings generator. No change in generated code because no arrays are currently generated. Signed-off-by: Ian Campbell <ian.campbell@citria.xcom> diff -r be294b1cdd00 -r b7e2cd4a03f2 tools/ocaml/libs/xl/genwrap.py --- a/tools/ocaml/libs/xl/genwrap.py Tue Nov 20 17:22:21 2012 +0000 +++ b/tools/ocaml/libs/xl/genwrap.py Tue Nov 20 17:22:21 2012 +0000 @@ -143,7 +143,13 @@ def c_val(ty, c, o, indent="", parent = raise NotImplementedError("No c_val fn for Builtin %s (%s)" % (ty.typename, type(ty))) s += "%s;" % (fn % { "o": o, "c": c }) elif isinstance (ty,idl.Array): - raise("Cannot handle Array type\n") + s += "{\n" + s += "\tint i;\n" + s += "\t%s = Wosize_val(%s);\n" % (parent + ty.lenvar.name, o) + s += "\tfor(i=0; i<%s; i++) {\n" % (parent + ty.lenvar.name) + s += c_val(ty.elem_type, c+"[i]", "Field(%s, i)" % o, indent="\t\t", parent=parent) + "\n" + s += "\t}\n" + s += "}\n" elif isinstance(ty,idl.Enumeration) and (parent is None): n = 0 s += "switch(Int_val(%s)) {\n" % o
Rob Hoes
2012-Nov-29 16:52 UTC
Re: [PATCH 05 of 15] libxl: ocaml: support for Arrays in bindings generator
> # HG changeset patch > # User Ian Campbell <ijc@hellion.org.uk> # Date 1353432141 0 # Node ID > b7e2cd4a03f278c9abfec0812c88234f7e493646 > # Parent be294b1cdd00dac5d3a1b42faf06656902b99e5b > libxl: ocaml: support for Arrays in bindings generator. > > No change in generated code because no arrays are currently generated. > > Signed-off-by: Ian Campbell <ian.campbell@citria.xcom>I tried this on an example, and it looks like it is doing the right thing. Acked-by: Rob Hoes <rob.hoes@citrix.com>> diff -r be294b1cdd00 -r b7e2cd4a03f2 tools/ocaml/libs/xl/genwrap.py > --- a/tools/ocaml/libs/xl/genwrap.py Tue Nov 20 17:22:21 2012 +0000 > +++ b/tools/ocaml/libs/xl/genwrap.py Tue Nov 20 17:22:21 2012 +0000 > @@ -143,7 +143,13 @@ def c_val(ty, c, o, indent="", parent > raise NotImplementedError("No c_val fn for Builtin %s (%s)" % > (ty.typename, type(ty))) > s += "%s;" % (fn % { "o": o, "c": c }) > elif isinstance (ty,idl.Array): > - raise("Cannot handle Array type\n") > + s += "{\n" > + s += "\tint i;\n" > + s += "\t%s = Wosize_val(%s);\n" % (parent + ty.lenvar.name, o) > + s += "\tfor(i=0; i<%s; i++) {\n" % (parent + ty.lenvar.name) > + s += c_val(ty.elem_type, c+"[i]", "Field(%s, i)" % o, indent="\t\t", > parent=parent) + "\n" > + s += "\t}\n" > + s += "}\n" > elif isinstance(ty,idl.Enumeration) and (parent is None): > n = 0 > s += "switch(Int_val(%s)) {\n" % o > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel