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