On Wed, 2015-07-08 at 15:34 +0100, Rob Hoes wrote: > > > On 8 Jul 2015, at 15:19, Ian Campbell <ian.campb...@citrix.com> wrote: > > > > On Wed, 2015-07-08 at 15:08 +0100, Rob Hoes wrote: > >> > >>> On 8 Jul 2015, at 12:37, Ian Campbell <ian.campb...@citrix.com> wrote: > >>> ... > >>> > >>> I have a patch to genwrap.py which results in the following diff to the > >>> generate ml files for the anonymous sub-struct added by the IDL change > >>> above. > >>> > >>> Dave/Euan/Rob, is that idiomatic ocaml or is it possible to have > >>> anonymous structs in ocaml like it is in C? > >> > >> I think that you have done the right thing. I’m not sure if you can > >> define a nested record type without giving the inner one a name. But > >> frankly, I don’t think there is much point to that either. > > > > Thanks. > > > >> In fact, I’d even drop the "__anon” and use the struct name as the > >> type name directly. > > > > I did have that to start with, see below for how the keyed union stuff > > worked which lead me to suffix it. > > It’s just that __anon doesn’t really mean much, because it isn’t > anonymous in OCaml :) In hindsight, I would have probably dropped the > __union as well...
Me too, now ;-) > Anyway, I don’t care too much about these names, because in practice > you won’t normally use them directly. Right, thanks. > > Rob > > >> Or for consistency, use "type_<name>”, which is similar to what > >> happens in the keyed union case (“type_hvm", “type_pv”). > > > > Actually in this case the "type" is the name of the KeyedUnion and the > > hvm|pv are the potential values of the enum which is the key. > > > >> Incidentally, those structs are also defined as "Struct(None, [...”, > >> but are probably handled specially because the struct appears inside > >> the union. > > > > Correct, they needed different special handling of the struct in order > > to construct the keyedunion as an ocaml discriminated type thing, which > > ends up with (for a keyedunion key field "type" of the domain type > > enum): > > type type_hvm = { ... } > > type type_pv = { ... } > > type type__union = Hvm of type_hvm | Pv of type_pv | Invalid > > > > then the field is "xl_type : type__union"; > > > > (the xl_ prefix is because type, the name of the C field, is an ocaml > > keyword...) > > > > I added the __anon suffix for consistency with the __union suffix here. > > > > Ian. > > > > > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel