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

34 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout: post
title: "Vala interface madness"
date: 2016-02-26 13:07:52
tags: [vala, development]
published: true
author:
name: "Gergely Polonkai"
email: "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.