Mercurial > projects > qtd
comparison qt/d1/qt/QtdObject.d @ 249:382a5f6beea9
Missing files
author | maxter |
---|---|
date | Thu, 20 Aug 2009 14:48:39 +0000 |
parents | |
children | 87b23bac5905 |
comparison
equal
deleted
inserted
replaced
248:7664de4a55e5 | 249:382a5f6beea9 |
---|---|
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 //gcManaged = 0x4 | |
22 } | |
23 | |
24 package abstract class QtdObject | |
25 { | |
26 private: | |
27 void* __nativeId_ = null; | |
28 QtdObjectFlags __flags_; | |
29 | |
30 public: | |
31 return __nativeId; | |
32 | |
33 mixin SignalHandlerOps; | |
34 | |
35 this(void* nativeId, QtdObjectFlags flags = QtdObjectFlags.none) | |
36 { | |
37 __nativeId_ = nativeId; | |
38 __flags_ = flags; | |
39 } | |
40 | |
41 final QtdObjectFlags __flags() | |
42 { | |
43 return __flags_; | |
44 } | |
45 | |
46 /+ final +/ void __setFlags(QtdObjectFlags flags, bool value) | |
47 { | |
48 if (value) | |
49 __flags_ |= flags; | |
50 else | |
51 __flags_ &= ~flags; | |
52 } | |
53 | |
54 // COMPILER BUG: 3206 | |
55 protected void __deleteNative() | |
56 { | |
57 assert(false); | |
58 } | |
59 | |
60 ~this() | |
61 { | |
62 if (!(__flags_ & QtdObjectFlags.nativeOwnership)) | |
63 { | |
64 // avoid deleting D object twice. | |
65 __flags_ |= QtdObjectFlags.dOwnership; | |
66 __deleteNative; | |
67 } | |
68 } | |
69 } |