annotate test.d @ 64:42e997034df9

Label
author Frank Benoit <benoit@tionex.de>
date Sat, 12 Jan 2008 15:16:49 +0100
parents 758bbbe4b86a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }