comparison org.eclipse.swt.gtk.linux.x86/src/org/eclipse/swt/internal/accessibility/gtk/ATK.d @ 49:7a2dd761a8b2

more work until dmd 2.026 linux segfaults.
author Frank Benoit <benoit@tionex.de>
date Fri, 27 Mar 2009 12:59:54 +0100
parents ddbfe84d86df
children
comparison
equal deleted inserted replaced
48:ddbfe84d86df 49:7a2dd761a8b2
23 import org.eclipse.swt.internal.gtk.OS; 23 import org.eclipse.swt.internal.gtk.OS;
24 import org.eclipse.swt.internal.c.atk; 24 import org.eclipse.swt.internal.c.atk;
25 import org.eclipse.swt.internal.c.gtk; 25 import org.eclipse.swt.internal.c.gtk;
26 26
27 version(Tango){ 27 version(Tango){
28 import tango.core.Traits; 28 import tango.core.Traits;
29 import tango.core.Tuple;
29 } else { // Phobos 30 } else { // Phobos
31 import std.traits;
32 import std.typetuple;
30 } 33 }
31 34
32 alias org.eclipse.swt.internal.c.atk.AtkObjectFactory AtkObjectFactory; 35 alias org.eclipse.swt.internal.c.atk.AtkObjectFactory AtkObjectFactory;
33 alias org.eclipse.swt.internal.c.atk.AtkObjectClass AtkObjectClass; 36 alias org.eclipse.swt.internal.c.atk.AtkObjectClass AtkObjectClass;
34 alias org.eclipse.swt.internal.c.atk.AtkActionIface AtkActionIface; 37 alias org.eclipse.swt.internal.c.atk.AtkActionIface AtkActionIface;
75 const char[] NameOfFunc = (&f).stringof[2 .. $]; 78 const char[] NameOfFunc = (&f).stringof[2 .. $];
76 } 79 }
77 } 80 }
78 81
79 template ForwardGtkAtkCFunc( alias cFunc ) { 82 template ForwardGtkAtkCFunc( alias cFunc ) {
80 alias ParameterTupleOf!(cFunc) P; 83 version(Tango){
81 alias ReturnTypeOf!(cFunc) R; 84 alias ParameterTupleOf!(cFunc) P;
82 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){ 85 alias ReturnTypeOf!(cFunc) R;
83 lock.lock(); 86 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
84 scope(exit) lock.unlock(); 87 lock.lock();
85 return cFunc(p); 88 scope(exit) lock.unlock();
86 }"); 89 return cFunc(p);
90 }");
91 } else { // Phobos
92 alias ParameterTypeTuple!(cFunc) P;
93 alias ReturnType!(cFunc) R;
94 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
95 lock.lock();
96 scope(exit) lock.unlock();
97 return cFunc(p);
98 }");
99 }
87 } 100 }
88 /+ 101 /+
89 // alternative template implementation, might be more stable 102 // alternative template implementation, might be more stable
90 template ForwardGtkOsCFunc(String name) { 103 template ForwardGtkOsCFunc(String name) {
91 alias typeof(mixin(name)) func; 104 alias typeof(mixin(name)) func;