Mercurial > projects > dwt2
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; |