Mercurial > projects > qtd
comparison d2/qtd/QtdObject.d @ 357:9784459f0750
An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Q_CLASSINFO implementation
Now Qtd can be built on Windows
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Wed, 02 Jun 2010 19:38:05 +0300 |
parents | 18bd68f586c6 |
children | a032df77b6ab |
comparison
equal
deleted
inserted
replaced
356:12cec2d14e1c | 357:9784459f0750 |
---|---|
8 * (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | 8 * (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
9 * | 9 * |
10 */ | 10 */ |
11 | 11 |
12 module qtd.QtdObject; | 12 module qtd.QtdObject; |
13 import qtd.Core; | |
13 | 14 |
14 enum QtdObjectFlags : ubyte | 15 enum QtdObjectFlags : ubyte |
15 { | 16 { |
16 none, | 17 none, |
17 nativeOwnership = 0x1, | 18 nativeOwnership = 0x1, |
59 __deleteNative; | 60 __deleteNative; |
60 } | 61 } |
61 } | 62 } |
62 } | 63 } |
63 | 64 |
64 extern(C) void qtd_QtdObject_delete(void* dId) | 65 mixin(qtdExport("void", "QtdObject_delete", "void* dId", |
65 { | 66 q{ |
66 auto obj = cast(QtdObject)dId; | 67 auto obj = cast(QtdObject)dId; |
67 | 68 |
68 if (!(obj.__flags & QtdObjectFlags.dOwnership)) | 69 if (!(obj.__flags & QtdObjectFlags.dOwnership)) |
69 { | 70 { |
70 // Avoid deleting native object twice | 71 // Avoid deleting native object twice |
71 obj.__setFlags(QtdObjectFlags.nativeOwnership, true); | 72 obj.__setFlags(QtdObjectFlags.nativeOwnership, true); |
72 delete obj; | 73 delete obj; |
73 } | 74 } |
74 } | 75 })); |