[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2-resend 08/30] libxl: ocaml: support for KeyedUnion in the bindings generator.
Rob Hoes writes ("[Xen-devel] [PATCH v2-resend 08/30] libxl: ocaml: support for KeyedUnion in the bindings generator."): > A KeyedUnion consists of two fields in the containing struct. First an > enum field ("e") used as a descriminator and second a union ("u") > containing potentially anonymous structs associated with each enum > value. ... > foo = Enumeration("foo", [ > (0, "BAR"), > (1, "BAZ"), > ]) > s = Struct("s", [ > ("u", KeyedUnion(none, foo, "blargle", [ > ("bar", Struct(...xxx...)), > ("baz", Struct(...yyy...)), I think you have some confusion betwwen bar,baz and foo,bar ? At least, I hope so, as otherwise I haven't understood at all. > and map this to ocaml > > type foo = BAR | BAZ; > module S = struct > type blargle_bar = ...xxx...; > type blargle_baz = ...yyy...; > type blargle__union = Bar of blargle_bar | Baz of blargle_baz; > type t = > { > blargle : blargle__union; > } > end Is this indirection (through S.t) really needed ? It seems a bit ugly. But I'm no expert on ocaml syntax or style. > These type names are OK because they are already within the namespace > associated with the struct "s". > > If the struct associated with bar is empty then we don't bother with > blargle_bar of "of blargle_bar". I'm not sure I follow this observation. I don't intend to review the actual generator and will instead take on trust that it does what you say :-). Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |