Skip to content

Commit cce61ec

Browse files
elmarcosdroege
authored andcommitted
Add a Vala example
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
1 parent efd8842 commit cce61ec

File tree

3 files changed

+73
-3
lines changed

3 files changed

+73
-3
lines changed

Ex-0.1.pc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Name: Ex
2+
Description:
3+
Version: 0.1
4+
Libs: -Ltarget/debug -lgobject_example
5+
Cflags: -Iinclude
6+
Requires: gobject-2.0

Makefile

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ RUST_SOURCES = \
2424
src/shared_rstring/imp.rs \
2525
src/shared_rstring/mod.rs
2626

27-
all: Ex-0.1.gir Ex-0.1.typelib
27+
all: Ex-0.1.gir Ex-0.1.typelib Ex-0.1.vapi
28+
29+
export PKG_CONFIG_PATH=$(PWD)
30+
export GI_TYPELIB_PATH=$(PWD)
31+
export LD_LIBRARY_PATH=$(PWD)/target/debug
2832

2933
target/debug/libgobject_example.so: $(RUST_SOURCES)
3034
cargo build
@@ -43,16 +47,31 @@ Ex-0.1.typelib: Ex-0.1.gir
4347
--includedir=include \
4448
$< -o $@
4549

50+
Ex-0.1.vapi: Ex-0.1.gir
51+
vapigen \
52+
--library Ex-0.1 \
53+
$<
54+
4655
clean:
4756
rm -f Ex-0.1.typelib
4857
rm -f Ex-0.1.gir
58+
rm -f Ex-0.1.vapi test-vala
4959
cargo clean
5060

5161
run-python: Ex-0.1.typelib
52-
GI_TYPELIB_PATH=$(PWD) LD_LIBRARY_PATH=$(PWD)/target/debug python3 test.py
62+
python3 test.py
5363

5464
run-gjs: Ex-0.1.typelib
55-
GI_TYPELIB_PATH=$(PWD) LD_LIBRARY_PATH=$(PWD)/target/debug gjs test.js
65+
gjs test.js
66+
67+
test-vala: test.vala Ex-0.1.vapi
68+
valac -v \
69+
--vapidir=$(PWD) \
70+
--pkg=Ex-0.1 \
71+
$< -o $@
72+
73+
run-vala: test-vala
74+
./test-vala
5675

5776
check:
5877
cargo test

test.vala

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using Ex;
2+
3+
void on_incremented (int val, int inc) {
4+
stdout.printf ("incremented to %d by %d\n", val, inc);
5+
}
6+
7+
public int main (string[] args) {
8+
var foo = new Ex.Foo ("foo's name");
9+
foo.incremented.connect (on_incremented);
10+
11+
stdout.printf ("foo name: %s\n", foo.get_name ());
12+
stdout.printf ("foo inc 1: %d\n", foo.increment (1));
13+
stdout.printf ("foo inc 10: %d\n", foo.increment (10));
14+
stdout.printf ("foo counter: %d\n", foo.get_counter ());
15+
16+
var bar = new Ex.Bar ("bar's name");
17+
bar.incremented.connect (on_incremented);
18+
19+
stdout.printf ("bar name: %s\n", bar.get_name ());
20+
stdout.printf ("bar inc 1: %d\n", bar.increment (1));
21+
stdout.printf ("bar inc 10: %d\n", bar.increment (10));
22+
stdout.printf ("bar counter: %d\n", bar.get_counter ());
23+
24+
stdout.printf ("bar number: %f\n", bar.get_number ());
25+
stdout.printf ("bar number (property): %f\n", bar.number);
26+
bar.set_number (10.0);
27+
stdout.printf ("bar number: %f\n", bar.get_number ());
28+
stdout.printf ("bar number (property): %f\n", bar.number);
29+
bar.number = 20.0;
30+
stdout.printf ("bar number: %f\n", bar.get_number ());
31+
stdout.printf ("bar number (property): %f\n", bar.number);
32+
33+
var s = new Ex.RString ("something");
34+
stdout.printf ("rstring: %s\n", s.get ());
35+
var s2 = s.copy ();
36+
s2.set ("something else");
37+
stdout.printf ("rstring 2: %s\n", s2.get ());
38+
39+
var ss = new Ex.SharedRString ("something");
40+
stdout.printf ("shared rstring: %s\n", ss.get ());
41+
var ss2 = ss.ref ();
42+
stdout.printf ("shared rstring 2: %s\n", ss2.get ());
43+
44+
return 0;
45+
}

0 commit comments

Comments
 (0)