comparison qt/d1/qt/QtdObject.d @ 260:b5773ccab07d lifetime

closer
author maxter
date Fri, 18 Sep 2009 18:52:03 +0000
parents 515d6e1c7b10
children 8f7bb7fc3123
comparison
equal deleted inserted replaced
259:515d6e1c7b10 260:b5773ccab07d
97 return _classInfo; 97 return _classInfo;
98 } 98 }
99 } 99 }
100 100
101 101
102 abstract class QtdMetaObject : MetaObject 102 abstract class QtdMetaObjectBase : MetaObject
103 { 103 {
104 QtdObjectBase function(void* nativeId, QtdObjectFlags flags) _createWrapper; 104 QtdObjectBase function(void* nativeId, QtdObjectFlags flags) _createWrapper;
105
106 this(QtdMetaObjectBase base)
107 {
108 super(base);
109 }
105 110
106 void construct(T : QtdObject, Concrete = T)() 111 void construct(T : QtdObject, Concrete = T)()
107 { 112 {
108 super.construct!(T); 113 super.construct!(T);
109 _createWrapper = &T.__createWrapper; 114 _createWrapper = &T.__createWrapper;
111 } 116 }
112 117
113 /++ 118 /++
114 Meta-object for polymorphic Qt classes. 119 Meta-object for polymorphic Qt classes.
115 +/ 120 +/
116 final class QtdMetaObject : MetaObject 121 final class QtdMetaObject : QtdMetaObjectBase
117 { 122 {
118 alias typeof(this) This; 123 alias typeof(this) This;
119 124
120 private void* _typeId; 125 private void* _typeId;
121 126
141 if (auto obj = mo.wrap(nativeId, typeId, flags)) 146 if (auto obj = mo.wrap(nativeId, typeId, flags))
142 return obj; 147 return obj;
143 } 148 }
144 } 149 }
145 150
146 return _createWrapper(nativeId, flags); 151 return static_cast!(QtdObject)(_createWrapper(nativeId, flags));
147 } 152 }
148 } 153 }
149 154
150 abstract class QtdObjectBase 155 abstract class QtdObjectBase
151 { 156 {
271 276
272 ~this() 277 ~this()
273 { 278 {
274 debug(QtdVerbose) __print("In QtdObject destructor"); 279 debug(QtdVerbose) __print("In QtdObject destructor");
275 280
276 if (__prev || __root is this)d 281 if (__prev || __root is this)
277 __unpin; 282 __unpin;
278 } 283 }
279 } 284 }
280 285
281 /++ 286 /++