comparison qt/d2/qt/QtdObject.d @ 253:073b9153ed8a

Rev. 264 done right. Problems: - classwizard segfaults on exit due to a bug in signals/slots or runtime. - hellogl doesn't compile with dmd2 due to a bug in the compiler backend
author maxter
date Sun, 30 Aug 2009 09:59:12 +0000
parents
children f9559a957be9
comparison
equal deleted inserted replaced
252:37eed70de029 253:073b9153ed8a
1 /**
2 *
3 * Copyright: Copyright QtD Team, 2008-2009
4 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>
5 *
6 * Copyright QtD Team, 2008-2009
7 * Distributed under the Boost Software License, Version 1.0.
8 * (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 *
10 */
11
12 module qt.QtdObject;
13
14 import qt.Signal;
15
16 enum QtdObjectFlags : ubyte
17 {
18 none,
19 nativeOwnership = 0x1,
20 dOwnership = 0x2,
21 dynamicEntity = 0x4
22 //gcManaged = 0x4
23 }
24
25 package abstract class QtdObject
26 {
27 protected QtdObjectFlags __flags_;
28 void* __nativeId;
29
30 mixin SignalHandlerOps;
31
32 this(void* nativeId, QtdObjectFlags flags = QtdObjectFlags.none)
33 {
34 __nativeId = nativeId;
35 __flags_ = flags;
36 }
37
38 final QtdObjectFlags __flags()
39 {
40 return __flags_;
41 }
42
43 /+ final +/ void __setFlags(QtdObjectFlags flags, bool value)
44 {
45 if (value)
46 __flags_ |= flags;
47 else
48 __flags_ &= ~flags;
49 }
50
51 // COMPILER BUG: 3206
52 protected void __deleteNative()
53 {
54 assert(false);
55 }
56
57 ~this()
58 {
59 if (!(__flags_ & QtdObjectFlags.nativeOwnership))
60 {
61 // avoid deleting D object twice.
62 __flags_ |= QtdObjectFlags.dOwnership;
63 __deleteNative;
64 }
65 }
66 }