You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gergelypolonkai-web-jekyll/content/blog/2016-02-26-vala-interface-m...

1.3 KiB

Vala interface madness

date

2016-02-26T13:07:52Z

category

blog

tags

vala,development

url

2016/02/26/vala-interface-madness/

save_as

2016/02/26/vala-interface-madness/index.html

status

published

author

"Gergely Polonkai"

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.