Mercurial > projects > dwt-linux
annotate test.d @ 64:42e997034df9
Label
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 12 Jan 2008 15:16:49 +0100 |
parents | 758bbbe4b86a |
children |
rev | line source |
---|---|
15
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
1 module test; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
2 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
3 private import dwt.internal.gtk.c.cairo; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
4 private import tango.core.Traits; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
5 private import tango.io.Stdout; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
6 private import tango.stdc.stdio; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
7 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
8 struct lock { |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
9 static void lock() { printf("lock\n");} |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
10 static void unlock() { printf("unlock\n");} |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
11 } |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
12 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
13 const static char[] mm = "Inside outer cairo_version"; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
14 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
15 template NameOfFunc(alias f) { |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
16 // Note: highly dependent on the .stringof formatting |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
17 // the value begins with "& " which is why the first two chars are cut off |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
18 const char[] NameOfFunc = (&f).stringof[2 .. $]; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
19 } |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
20 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
21 template ForwardGtkOsCFunc( alias cFunc ) { |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
22 alias ParameterTupleOf!(cFunc) P; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
23 alias ReturnTypeOf!(cFunc) R; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
24 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){ |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
25 lock.lock(); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
26 scope(exit) lock.unlock(); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
27 Stdout (mm).newline; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
28 return cFunc(p); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
29 }"); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
30 } |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
31 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
32 public class OS { |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
33 mixin ForwardGtkOsCFunc!(cairo_version); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
34 mixin ForwardGtkOsCFunc!(cairo_version_string); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
35 } |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
36 |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
37 void main() |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
38 { |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
39 Stdout ("calling cairo_version...").newline; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
40 int p = OS.cairo_version(); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
41 int i = cairo_version(); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
42 Stdout.formatln("OS.cairo_version() returns: {} cairo_version() returns: {}", p, i ).newline; |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
43 printf("OS.cairo_version_string returns: %s\n", cairo_version_string() ); |
758bbbe4b86a
Fixup gtk bindings; OS.d updates
John Reimer<terminal.node@gmail.com>
parents:
diff
changeset
|
44 } |