Skip to content

Commit e7a0dd9

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

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed

Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ clean:
5656
rm -f Ex-0.1.typelib
5757
rm -f Ex-0.1.gir
5858
rm -f Ex-0.1.vapi test-vala
59+
rm -rf test-c
5960
cargo clean
6061

6162
run-python: Ex-0.1.typelib
@@ -73,5 +74,11 @@ test-vala: test.vala Ex-0.1.vapi
7374
run-vala: test-vala
7475
./test-vala
7576

77+
test-c: test.c target/debug/libgobject_example.so $(HEADERS)
78+
$(CC) `pkg-config --cflags --libs Ex-0.1` $< -o $@
79+
80+
run-c: test-c
81+
./test-c
82+
7683
check:
7784
cargo test

test.c

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#include <glib.h>
2+
#include <ex/ex.h>
3+
4+
static void
5+
on_incremented (ExFoo *foo, gint val, gint inc, void *user_data)
6+
{
7+
g_print ("incremented to %d by %d\n", val, inc);
8+
}
9+
10+
int
11+
main (int argc, const char *argv[])
12+
{
13+
char *str;
14+
ExFoo *foo;
15+
ExBar *bar;
16+
ExRString *s, *s2;
17+
ExSharedRString *ss, *ss2;
18+
gdouble number;
19+
20+
foo = ex_foo_new ("foo's name");
21+
g_signal_connect (foo, "incremented", G_CALLBACK (on_incremented), NULL);
22+
23+
str = ex_foo_get_name (foo);
24+
g_print ("foo name: %s\n", str);
25+
g_free (str);
26+
g_print ("foo inc 1: %d\n", ex_foo_increment (foo, 1));
27+
g_print ("foo inc 10: %d\n", ex_foo_increment (foo, 10));
28+
g_print ("foo counter: %d\n", ex_foo_get_counter (foo));
29+
g_object_unref (foo);
30+
31+
bar = ex_bar_new ("bar's name");
32+
g_signal_connect (bar, "incremented", G_CALLBACK (on_incremented), NULL);
33+
34+
str = ex_foo_get_name (EX_FOO (bar));
35+
g_print ("bar name: %s\n", str);
36+
g_free (str);
37+
g_print ("bar inc 1: %d\n", ex_foo_increment (EX_FOO (bar), 1));
38+
g_print ("bar inc 10: %d\n", ex_foo_increment (EX_FOO (bar), 10));
39+
g_print ("bar counter: %d\n", ex_foo_get_counter (EX_FOO (bar)));
40+
41+
g_print ("bar number: %f\n", ex_bar_get_number (bar));
42+
g_object_get (bar, "number", &number, NULL);
43+
g_print ("bar number (property): %f\n", number);
44+
ex_bar_set_number (bar, 10.0);
45+
g_print ("bar number: %f\n", ex_bar_get_number (bar));
46+
g_object_get (bar, "number", &number, NULL);
47+
g_print ("bar number (property): %f\n", number);
48+
number = 20.0;
49+
g_object_set (bar, "number", number, NULL);
50+
g_print ("bar number: %f\n", ex_bar_get_number (bar));
51+
g_object_get (bar, "number", &number, NULL);
52+
g_print ("bar number (property): %f\n", number);
53+
g_object_unref (bar);
54+
55+
s = ex_rstring_new ("something");
56+
57+
str = ex_rstring_get (s);
58+
g_print ("rstring: %s\n", str);
59+
g_free (str);
60+
s2 = ex_rstring_copy (s);
61+
ex_rstring_set (s2, "something else");
62+
str = ex_rstring_get (s2);
63+
g_print ("rstring 2: %s\n", str);
64+
g_free (str);
65+
ex_rstring_free (s2);
66+
ex_rstring_free (s);
67+
68+
ss = ex_shared_rstring_new ("something");
69+
str = ex_shared_rstring_get (ss);
70+
g_print ("shared rstring: %s\n", str);
71+
g_free (str);
72+
ss2 = ex_shared_rstring_ref (ss);
73+
str = ex_shared_rstring_get (ss2);
74+
g_print ("shared rstring 2: %s\n", str);
75+
g_free (str);
76+
ex_shared_rstring_unref (ss2);
77+
ex_shared_rstring_unref (ss);
78+
79+
return 0;
80+
}

0 commit comments

Comments
 (0)