Thanks, Kjell. I missed that gobj() returns a pointer to gobject_. However, the returned type is not a pure C gtype. Let me illustrate this by example:
``` Glib::Value<Glib::DateTime> data; data.init(data.value_type()); const GValue *val = data.gobj(); std::cout << "val type is " << G_VALUE_TYPE_NAME(val) << std::endl; GValue *val2 = g_new0(GValue, 1); g_value_init(val2, G_TYPE_DATE_TIME); std::cout << "val2 type is " << G_VALUE_TYPE_NAME(val2) << std::endl; ``` In stdout I see ``` val type is glibmm__CustomBoxed_N4Glib8DateTimeE val2 type is GDateTime ``` I know that GDateTime is a boxed type and Glib::Value registers it own type. If I use built-in type, e.g. int, I see the same type for C++ and C parts. Basically, my question should be refined and tailed to the conversion of C++ gtype (boxed equivalent) to the C-like gtype. Thanks. On Tue, 2019-04-23 at 10:46 +0200, Kjell Ahlstedt wrote: > What's wrong with Glib::ValueBase::gobj()? It returns a pointer to > gobject_. What else do you want? How should your proposed > Glib::ValueBase::get_gvalue() differ from Glib::ValueBase::gobj()? > On 2019-04-23 06:14, Pavlo Solntsev via gtkmm-list wrote: > > Hi, > > > > I have > > > > Glib::Value<Foo> data; > > data.init(Glib::Value<Foo>::value_type()); > > > > How can I get pure C GValue*? I need it to use with the C API. > > data.gobj() returns C++ based type, which is not acceptable by C > > API. I > > see protected gobject_ in the base class. Does it make sense to > > have an > > API, e.g. const GValue* Glib::ValueBase::get_gvalue() to fetch > > thepointer for underlying GValue? > > > > Any other suggestion? > > Thanks. > > _______________________________________________ gtkmm-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/gtkmm-list
