Re: Clarification for the application of GVariant/Glib::Variant maybe types



On Fri, 2011-10-07 at 15:32 -0400, José Alburquerque wrote:
> On Fri, 2011-10-07 at 15:05 -0400, José Alburquerque wrote:
> > On Fri, 2011-10-07 at 14:54 -0400, José Alburquerque wrote:
> > > On Fri, 2011-10-07 at 12:54 +0200, Murray Cumming wrote:
> > > > On Fri, 2011-10-07 at 09:29 +0200, Markus Elfring wrote:
> > > > > By which (member) function can such a variable be marked to contain an
> > > > > unknown
> > > > > value?
> > > > > (Do I overlook a programming interface once more?)
> > > > > http://developer.gnome.org/glibmm/2.30/classGlib_1_1VariantBase.html
> > > > 
> > > > It looks like we don't have any API yet to create a "maybe"
> > > > Glib::Variant. The C API is g_variant_new_maybe() but we don't seem to
> > > > use that yet. I don't know how we would support this in a template
> > > > specialization.
> > > 
> > > One possible way might be to add a create_maybe() method to
> > > Glib::VariantContainerBase that could use the
> > > Glib::VariantBase::get_type() method of its children to create the maybe
> > > type, but I'm not sure it would work.  I guess I can try and add it for
> > > glibmm-2.32 and see if it works.
> > 
> > Though as you point out, Murray, it isn't as easy as it sounds because a
> > create method should ideally return the type of the derived class.  I'll
> > try to give it a little thought and see if something is possible for
> > 2.32.
> 
> Last clarification:  A create_maybe() as described above in
> Glib::VariantContainerBase should suffice.  The method declaration might
> look something like:
> 
> VariantContainerBase create_maybe(const Glib::VariantBase& child);
> 
> It could use the Glib::VariantBase::get_type() method of the child to
> call g_variant_new_maybe() like so:
> 
> GVariant* g_variant = g_variant_new_maybe(child.get_type().gobj(),
> const_cast<GVariant*>(child.gobj()));
> 
> And then return a VariantContainerBase from the g_variant.
> 
> I don't know why I was thinking the new method return type should be the
> type of one of the derived classes of VariantContainerBase.

And, of course, I'm not referring to supporting this in a template
specialization.  I'm merely thinking about how it could be added to the
API.  Suffice it to say that if it can be added, it will for 3.2.  Sorry
for all the posts on this.

-- 
José



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]