Mercurial > projects > qtd
comparison d2/qtd/QtdObject.d @ 344:96a75b1e5b26
project structure changes
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Fri, 14 May 2010 12:14:37 +0300 |
parents | qt/d2/qt/QtdObject.d@f9559a957be9 |
children | 18bd68f586c6 |
comparison
equal
deleted
inserted
replaced
343:552647ec0f82 | 344:96a75b1e5b26 |
---|---|
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 qtd.QtdObject; | |
13 | |
14 enum QtdObjectFlags : ubyte | |
15 { | |
16 none, | |
17 nativeOwnership = 0x1, | |
18 dOwnership = 0x2, | |
19 dynamicEntity = 0x4 | |
20 //gcManaged = 0x4 | |
21 } | |
22 | |
23 package abstract class QtdObject | |
24 { | |
25 protected QtdObjectFlags __flags_; | |
26 void* __nativeId; | |
27 | |
28 this(void* nativeId, QtdObjectFlags flags = QtdObjectFlags.none) | |
29 { | |
30 __nativeId = nativeId; | |
31 __flags_ = flags; | |
32 } | |
33 | |
34 final QtdObjectFlags __flags() | |
35 { | |
36 return __flags_; | |
37 } | |
38 | |
39 /+ final +/ void __setFlags(QtdObjectFlags flags, bool value) | |
40 { | |
41 if (value) | |
42 __flags_ |= flags; | |
43 else | |
44 __flags_ &= ~flags; | |
45 } | |
46 | |
47 // COMPILER BUG: 3206 | |
48 protected void __deleteNative() | |
49 { | |
50 assert(false); | |
51 } | |
52 | |
53 ~this() | |
54 { | |
55 if (!(__flags_ & QtdObjectFlags.nativeOwnership)) | |
56 { | |
57 // avoid deleting D object twice. | |
58 __flags_ |= QtdObjectFlags.dOwnership; | |
59 __deleteNative; | |
60 } | |
61 } | |
62 } |