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



On Tue, 2013-08-27 at 16:20 +0100, Ian Jackson wrote:
> Ian Campbell writes ("Re: [Xen-devel] [PATCH v2-resend 08/30] libxl: ocaml: 
> support for KeyedUnion in the bindings generator."):
> > On Tue, 2013-08-27 at 16:09 +0100, Ian Jackson wrote:
> > > 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.
> > 
> > I don't think so, foo is an enumeration with possible values of "bar"
> > and "baz".
> > 
> > The keyed union has a discriminator (called blargle in this example)
> > which is of type "enum foo". There is then an anonymous union with two
> > members, "bar" and "baz" corresponding to the possible values of
> > blargle.
> 
> That's what I thought.  So this part is wrong then ?

You didn't quote this part ;-)

> ]     We generate C:
> ]
> ]     enum { FOO, BAR } foo;

I meant "enum foo { BAR, BAZ };" here.

> > > > 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.
> > 
> > In the type blargle__union we don't bother with the "of blargle_bar"
> > case of the corresponding struct is empty.
> 
> So we generate
>     type blargle__union = Bar of blargle_bar | Baz;
> ?  If this is legal ocaml syntax, then fine, I guess.

Not just legal but idiomatic too, I think.

> (I can't remember what "of" does here.)

I'm not sure what the proper name would be (a KeyedUnion maybe ;-)) it
means you can unpick it with:

match a_blargle with
 | Bar of thing -> do stuff with the content of thing
 | Baz -> do other stuff, not with thing

(modulo me not remembering the real syntax, but it's close)

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.