gergelypolonkai-web-jekyll/_posts/2016-02-26-vala-interface-madness.md

1.2 KiB
Raw Blame History

layout title date tags published author
post Vala interface madness 2016-02-26 13:07:52
vala
development
true
name email
Gergely Polonkai gergely@polonkai.eu

Although I have just started making it in C, I decided to move my Matrix GLib SDK to Vala. First to learn a new language, and second because it is much easier to write GObject based stuff with it.

For the first step I created a .vapi file from my existing sources, so the whole SDK prototype was available for me in Vala.

I had a MatrixEvent class that implemented the GInitable interface, and many others were subclassed MatrixEvent. For some reason I dont remember, I created the following header for one of the event classes:

public class MatrixPresenceEvent : GLib.Object, GLib.Initable {

This is nice and everything, but as I didnt create an init() method for MatrixPresenceEvent, it tried to use the one from the parent class and somehow got into an infinite loop. The Vala transformer (valac), however, doesnt mention this.

Lessons learned: if you implement an interface on a subclass that is implemented by the parent dont forget to add the necessary functions to the subclass.