@@ -204,15 +204,11 @@ cdef class {{name}}Vector(Vector):
204
204
# Int64Vector is the only one we need exposed for other cython files.
205
205
{{if dtype != 'int64'}}
206
206
cdef:
207
- {{name}}VectorData * data
207
+ {{name}}VectorData data
208
208
ndarray ao
209
209
{{endif}}
210
210
211
211
def __cinit__(self):
212
- self.data = <{{name}}VectorData *>PyMem_Malloc(
213
- sizeof({{name}}VectorData))
214
- if not self.data:
215
- raise MemoryError()
216
212
self.data.n = 0
217
213
self.data.m = _INIT_VEC_CAP
218
214
self.ao = np.empty(self.data.m, dtype=np.{{dtype}})
@@ -223,11 +219,6 @@ cdef class {{name}}Vector(Vector):
223
219
self.ao.resize(self.data.m, refcheck=False)
224
220
self.data.data = <{{c_type}}*>self.ao.data
225
221
226
- def __dealloc__(self):
227
- if self.data is not NULL:
228
- PyMem_Free(self.data)
229
- self.data = NULL
230
-
231
222
def __len__(self) -> int:
232
223
return self.data.n
233
224
@@ -243,13 +234,13 @@ cdef class {{name}}Vector(Vector):
243
234
244
235
cdef void append(self, {{c_type}} x) noexcept:
245
236
246
- if needs_resize(self.data):
237
+ if needs_resize(& self.data):
247
238
if self.external_view_exists:
248
239
raise ValueError("external reference but "
249
240
"Vector.resize() needed")
250
241
self.resize()
251
242
252
- append_data_{{dtype}}(self.data, x)
243
+ append_data_{{dtype}}(& self.data, x)
253
244
254
245
cdef extend(self, const {{c_type}}[:] x):
255
246
for i in range(len(x)):
@@ -260,12 +251,9 @@ cdef class {{name}}Vector(Vector):
260
251
cdef class StringVector(Vector):
261
252
262
253
cdef:
263
- StringVectorData * data
254
+ StringVectorData data
264
255
265
256
def __cinit__(self):
266
- self.data = <StringVectorData *>PyMem_Malloc(sizeof(StringVectorData))
267
- if not self.data:
268
- raise MemoryError()
269
257
self.data.n = 0
270
258
self.data.m = _INIT_VEC_CAP
271
259
self.data.data = <char **>malloc(self.data.m * sizeof(char *))
@@ -288,11 +276,7 @@ cdef class StringVector(Vector):
288
276
self.data.data[i] = orig_data[i]
289
277
290
278
def __dealloc__(self):
291
- if self.data is not NULL:
292
- if self.data.data is not NULL:
293
- free(self.data.data)
294
- PyMem_Free(self.data)
295
- self.data = NULL
279
+ free(self.data.data)
296
280
297
281
def __len__(self) -> int:
298
282
return self.data.n
@@ -313,10 +297,10 @@ cdef class StringVector(Vector):
313
297
314
298
cdef void append(self, char *x) noexcept:
315
299
316
- if needs_resize(self.data):
300
+ if needs_resize(& self.data):
317
301
self.resize()
318
302
319
- append_data_string(self.data, x)
303
+ append_data_string(& self.data, x)
320
304
321
305
cdef extend(self, ndarray[object] x):
322
306
for i in range(len(x)):
@@ -652,7 +636,7 @@ cdef class {{name}}HashTable(HashTable):
652
636
653
637
if return_inverse:
654
638
labels = np.empty(n, dtype=np.intp)
655
- ud = uniques.data
639
+ ud = & uniques.data
656
640
use_na_value = na_value is not None
657
641
use_mask = mask is not None
658
642
if not use_mask and use_result_mask:
@@ -662,7 +646,7 @@ cdef class {{name}}HashTable(HashTable):
662
646
raise NotImplementedError # pragma: no cover
663
647
664
648
result_mask = UInt8Vector()
665
- rmd = result_mask.data
649
+ rmd = & result_mask.data
666
650
667
651
if use_mask:
668
652
mask_values = mask.view("uint8")
@@ -846,7 +830,7 @@ cdef class {{name}}HashTable(HashTable):
846
830
{{name}}VectorData *ud
847
831
848
832
labels = np.empty(n, dtype=np.intp)
849
- ud = uniques.data
833
+ ud = & uniques.data
850
834
851
835
with nogil:
852
836
for i in range(n):
0 commit comments