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

Re: [Xen-devel] [PATCH 05 of 15] libxl: ocaml: support for Arrays in bindings generator



> # HG changeset patch
> # User Ian Campbell <ijc@xxxxxxxxxxxxxx> # 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@xxxxxxxxxxx>

I tried this on an example, and it looks like it is doing the right thing.

Acked-by: Rob Hoes <rob.hoes@xxxxxxxxxx>

> 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@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

_______________________________________________
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®.