From e70f7c8c130797369e9a920edf3aad6078b91384 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 27 Jan 2012 17:01:21 +0000 Subject: 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 Acked-by: Ian Campbell Committed-by: Ian Jackson --- tools/ocaml/libs/xl/genwrap.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tools/ocaml') 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") -- cgit v1.2.3