|
[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 |