Yes, that's what I thought too. However, looking at GtkBuilder's source code, it has a function called type_name_mangle which converts a name like "GtkButton" to "gtk_button_get_type", then uses GModule to load that function. Vala's C generation seems to create a function of the same/similar naming convention, so the equivalent of typeof(Weapon) in C is weapon_get_type().
As a sketch, I suppose something like this ought to work: [CCode (has_target=false)] private delegate Type TypeOf(); ... var module = Module.open(null, 0); // opens the program itself instead of a different module TypeOf get_type; module.symbol("weapon_get_type", (void*) &get_type); // the real program needs to generate the name and check the return value here Type type = get_type(); Object obj = Object.create(type, "damage", 10); ... On Tue, Mar 22, 2016 at 2:19 AM, Felipe Lavratti <felipe...@gmail.com> wrote: > Hello, this is the minimum workaround I found to work, there might be a > simpler way of forcing the registration of non-literally used classes in > the GObject system. > > public class Weapon : Object { > public uint damage { get; construct; } > } > > int main () { > > /* Force class registration here, comment this line to see the > execution failing. */ > var klass = typeof(Weapon); > > Type WeaponType = Type.from_name("Weapon"); > Object weapon = Object.new(WeaponType, damage: 10); > > GLib.message("weapon.damage = %u", (weapon as Weapon).damage); > > return 0; > } > > > On Mon, Mar 21, 2016 at 10:47 AM Gergely Polonkai <gerg...@polonkai.eu> > wrote: > >> Hello, >> >> for the first sight your format looks verybsimilar to key-value files >> already supported by GLib: >> >> https://developer.gnome.org/glib/stable/glib-Key-value-file-parser.html >> http://valadoc.org/#!api=glib-2.0/GLib.KeyFile >> >> Are you sure it won't work for your problem? If it would, you may want to >> subclass it. >> >> Best, >> Gergely >> On Mar 21, 2016 2:26 PM, "Alan Manuel Gloria" <almkg...@gmail.com> wrote: >> >> > Hi Vala world, >> > >> > I'm trying to make some kind of description loader. I have a base class >> > like so: >> > >> > class Concept : Object { >> > string name { get; construct; } >> > string desc { get; construct; } >> > } >> > >> > And one or more classes, e.g.: >> > >> > class Component : Concept { >> > uint size { get; construct; } >> > uint cost { get; construct; } >> > } >> > class Weapon : Component { >> > uint damage { get; construct; } >> > } >> > >> > My goal is to parse some text file like so: >> > >> > [Blaster I] >> > type = Weapon >> > desc = A simple blaster. >> > size = 20 >> > cost = 200 >> > damage = 1 >> > >> > Then the parser class will provide a collection of Concept objects >> > indexable by name and type. >> > >> > My question is, how do I best do this? Gtk.Buildable seems to >> approximate >> > what I want, so I suppose I need to figure out how that works. >> > >> > My initial research seems to suggest that I need to use GLib.Type >> somehow, >> > but my understanding is that the exact type does not get created until >> it >> > is used. It seems to me that I'd need code like: >> > >> > var p = new MyTextFileParser(); >> > p.register(typeof(Component)); >> > p.register(typeof(Weapon)); >> > // ... and so on ... >> > >> > Thanks in advance. >> > >> > Sincerely, >> > AmkG >> > _______________________________________________ >> > vala-list mailing list >> > vala-list@gnome.org >> > https://mail.gnome.org/mailman/listinfo/vala-list >> > >> _______________________________________________ >> vala-list mailing list >> vala-list@gnome.org >> https://mail.gnome.org/mailman/listinfo/vala-list >> > _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list