summaryrefslogtreecommitdiff
path: root/tests/objects/interfaces.vala
blob: be4119d51d38b4dc5072962b2335a4ed56e996c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using GLib;

interface Maman.Ibaz : Object {
	public abstract void do_action ();

	public abstract void do_virtual_action ();

	protected void protected_mixin_1() {
		stdout.puts("protected_mixin_1\n");
		protected_mixin_2();
	}

	protected void protected_mixin_2() {
		stdout.puts("protected_mixin_2\n");
	}

	public void public_mixin() {
		protected_mixin_1();
		protected_mixin_2();

	}
}

class Maman.Baz : Object, Ibaz {
	public void do_action () {
		stdout.printf (" 2");
	}

	public virtual void do_virtual_action () {
		stdout.printf (" 4");
	}

	public void do_mixin() {
		public_mixin();
	}
}

class Maman.SubBaz : Baz {
	public override void do_virtual_action () {
		stdout.printf (" 6");
	}

	public static int main_func () {
		stdout.printf ("Interface Test: 1");

		Ibaz ibaz = new Baz ();
		ibaz.do_action ();
		ibaz.public_mixin();
		(ibaz as Baz).do_mixin();

		stdout.printf (" 3");

		ibaz.do_virtual_action ();

		stdout.printf (" 5");

		Ibaz subbaz = new SubBaz ();
		subbaz.do_virtual_action ();

		stdout.printf (" 7\n");

		subbaz.public_mixin();
		(subbaz as Baz).public_mixin();

		return 0;
	}
}

void main () {
	Maman.SubBaz.main_func ();
}