aboutsummaryrefslogtreecommitdiffstats
path: root/tools/ocaml
diff options
context:
space:
mode:
authorIan Jackson <ian.jackson@eu.citrix.com>2012-01-27 17:01:21 +0000
committerIan Jackson <ian.jackson@eu.citrix.com>2012-01-27 17:01:21 +0000
commite70f7c8c130797369e9a920edf3aad6078b91384 (patch)
tree7594640b084f6ca1bb0eb011e05bbe91c422f694 /tools/ocaml
parentde532b9e15e2f826aa49efb410aeb00e5f1671b5 (diff)
downloadxen-e70f7c8c130797369e9a920edf3aad6078b91384.tar.gz
xen-e70f7c8c130797369e9a920edf3aad6078b91384.tar.bz2
xen-e70f7c8c130797369e9a920edf3aad6078b91384.zip
ocaml, libxl: support "private" fields
The changeset 24378:b4365e2c2595 libxl: idl: support new "private" type attribute is not complete. Actually using this feature does not work because the ocaml idl generator does not know about it. So add that support. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Diffstat (limited to 'tools/ocaml')
-rw-r--r--tools/ocaml/libs/xl/genwrap.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/tools/ocaml/libs/xl/genwrap.py b/tools/ocaml/libs/xl/genwrap.py
index 2e65aec761..00583d2267 100644
--- a/tools/ocaml/libs/xl/genwrap.py
+++ b/tools/ocaml/libs/xl/genwrap.py
@@ -93,6 +93,8 @@ def gen_ocaml_ml(ty, interface, indent=""):
s += "\t{\n"
for f in ty.fields:
+ if f.type.private:
+ continue
x = ocaml_instance_of(f.type, f.name)
x = x.replace("\n", "\n\t\t")
s += "\t\t" + x + ";\n"
@@ -148,6 +150,8 @@ def c_val(ty, c, o, indent="", parent = None):
elif isinstance(ty, libxltypes.Aggregate) and (parent is None):
n = 0
for f in ty.fields:
+ if f.type.private:
+ continue
s += "%s\n" % c_val(f.type, "%s->%s" % (c, f.name), "Field(%s, %d)" % (o,n), parent="%s->" % (c))
n = n + 1
else:
@@ -212,6 +216,8 @@ def ocaml_Val(ty, o, c, indent="", parent = None):
n = 0
for f in ty.fields:
+ if f.type.private:
+ continue
s += "\n"
s += "\t%s\n" % ocaml_Val(f.type, "%s_field" % ty.rawname, "%s->%s" % (c,f.name), parent="%s->" % c)
s += "\tStore_field(%s, %d, %s);\n" % (o, n, "%s_field" % ty.rawname)
@@ -290,6 +296,8 @@ if __name__ == '__main__':
cinc.write(autogen_header("/*", "*/"))
for ty in types:
+ if ty.private:
+ continue
#sys.stdout.write(" TYPE %-20s " % ty.rawname)
ml.write(gen_ocaml_ml(ty, False))
ml.write("\n")