Fix saving lists of arrays with recent versions of numpy
[qpms.git] / qpms / cytmatrices.pxd
blob3d39d65054e1d8d5b16c47494ea1a99239793403
1 cimport numpy as np
2 from .qpms_cdefs cimport qpms_tmatrix_t, cdouble, qpms_tmatrix_interpolator_t, qpms_tmatrix_generator_t, qpms_tmatrix_function_t
3 from .cybspec cimport BaseSpec
5 cdef class TMatrixInterpolator:
6     #cdef readonly np.ndarray m # Numpy array holding the matrix data
7     cdef readonly BaseSpec spec # Here we hold the base spec for the correct reference counting; TODO check if it gets copied
8     cdef qpms_tmatrix_t *tmatrices_array
9     cdef cdouble *tmdata
10     cdef double *freqs
11     cdef double *freqs_su
12     cdef size_t nfreqs
13     cdef qpms_tmatrix_interpolator_t *interp
14     cdef inline qpms_tmatrix_interpolator_t *rawpointer(self):
15         return self.interp
17 cdef class TMatrixGenerator:
18     cdef qpms_tmatrix_generator_t g
19     cdef object holder
20     cdef inline qpms_tmatrix_generator_t raw(self):
21         return self.g
22     cdef inline qpms_tmatrix_generator_t *rawpointer(self):
23         return &(self.g)
25 cdef class TMatrixFunction:
26     cdef qpms_tmatrix_function_t f
27     cdef readonly TMatrixGenerator generator # reference holder
28     cdef readonly BaseSpec spec # reference holder
29     cdef inline qpms_tmatrix_function_t raw(self):
30         return self.f
31     cdef inline qpms_tmatrix_function_t *rawpointer(self):
32         return &self.f
35 cdef class TMatrixGeneratorTransformed:
36     pass
38 cdef class CTMatrix: # N.B. there is another type called TMatrix in tmatrices.py!
39     cdef readonly np.ndarray m # Numpy array holding the matrix data
40     cdef readonly BaseSpec spec # Here we hold the base spec for the correct reference counting; TODO check if it gets copied
41     cdef qpms_tmatrix_t t
44     cdef inline qpms_tmatrix_t *rawpointer(CTMatrix self):
45         '''Pointer to the qpms_tmatrix_t structure.
46         Don't forget to reference the BaseSpec object itself when storing the pointer anywhere!!!
47         '''
48         return &(self.t)