Add post about Vala interfaces
This commit is contained in:
parent
3769d93439
commit
6e619efc75
33
_posts/2016-02-26-vala-interface-madness.md
Normal file
33
_posts/2016-02-26-vala-interface-madness.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Vala interface madness"
|
||||||
|
date: 2016-02-26 15:07:62+02:00
|
||||||
|
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 don’t 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 didn’t 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, doesn’t mention this.
|
||||||
|
|
||||||
|
Lessons learned: if you implement an interface on a subclass that is
|
||||||
|
implemented by the parent don’t forget to add the necessary functions
|
||||||
|
to the subclass.
|
4
blog/tag/vala.html
Normal file
4
blog/tag/vala.html
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
layout: posts-by-tag
|
||||||
|
tag: vala
|
||||||
|
---
|
Loading…
Reference in New Issue
Block a user