Changeset 19
- Timestamp:
- 07/01/06 01:05:59 (6 years ago)
- Files:
-
- trunk/pyd/class_wrap.d (modified) (4 diffs)
- trunk/pyd/ctor_wrap.d (modified) (4 diffs)
- trunk/pyd/make_object.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/pyd/class_wrap.d
r18 r19 110 110 void wrapped_dealloc(PyObject* _self) { 111 111 wrap_object* self = cast(wrap_object*)_self; 112 wrap_class_instances!(T).remove(self.d_obj); 112 if (self.d_obj !is null) { 113 wrap_class_instances!(T)[self.d_obj] = wrap_class_instances!(T)[self.d_obj] - 1; 114 if (wrap_class_instances!(T)[self.d_obj] == 0) { 115 wrap_class_instances!(T).remove(self.d_obj); 116 } 117 } 113 118 self.ob_type.tp_free(self); 114 119 } … … 129 134 T t = new T; 130 135 (cast(wrap_object*)self).d_obj = t; 131 wrap_class_instances!(T)[t] = null;136 wrap_class_instances!(T)[t] = 1; 132 137 return 0; 133 138 } … … 139 144 // objects. 140 145 template wrap_class_instances(T) { 141 void*[T] wrap_class_instances;146 int[T] wrap_class_instances; 142 147 } 143 148 … … 179 184 void init() { 180 185 wrapped_class_type!(classname, T).tp_init = 181 &wrapped_ctors!(T, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10).init ;186 &wrapped_ctors!(T, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10).init_func; 182 187 } 183 188 } trunk/pyd/ctor_wrap.d
r18 r19 70 70 int wrapped_ctor(PyObject* self, PyObject* args, PyObject* kwds) { 71 71 T t; 72 72 73 73 try { /* begin try */ 74 74 75 75 static if (Ctor.ARGS == 1) { 76 76 t = new T( … … 176 176 177 177 (cast(wrapped_class_object!(T)*)self).d_obj = t; 178 wrap_class_instances!(T)[t] = null;178 wrap_class_instances!(T)[t] = 1; 179 179 180 180 return 0; … … 208 208 const uint ARGS = 0; 209 209 extern(C) 210 int init (PyObject* self, PyObject* args, PyObject* kwds) {210 int init_func(PyObject* self, PyObject* args, PyObject* kwds) { 211 211 int len = PyObject_Length(args); 212 212 // Default ctor … … 215 215 T t = new T; 216 216 (cast(wrap_object*)self).d_obj = t; 217 wrap_class_instances!(T)[t] = null;217 wrap_class_instances!(T)[t] = 1; 218 218 return 0; 219 219 } trunk/pyd/make_object.d
r10 r19 249 249 return res; 250 250 } else static if (is(C_long : T)) { 251 if (!PyNumber_Check(o)) could_not_convert!(T)(o); 251 252 C_long res = PyInt_AsLong(o); 252 253 handle_exception(); 253 254 return res; 254 255 } else static if (is(bool : T)) { 256 if (!PyNumber_Check(o)) could_not_convert!(T)(o); 255 257 int res = PyObject_IsTrue(o); 256 258 handle_exception();
