@@ -357,14 +357,14 @@ cdef extern from "blosc2.h":
357357
358358ctypedef struct user_filters_udata:
359359 char * py_func
360- char input_cdtype
361- char output_cdtype
360+ int input_cdtype
361+ int output_cdtype
362362 int32_t chunkshape
363363
364364ctypedef struct filler_udata:
365365 char * py_func
366366 int64_t inputs_id
367- char output_cdtype
367+ int output_cdtype
368368 int32_t chunkshape
369369
370370
@@ -1095,8 +1095,8 @@ cdef class SChunk:
10951095 cdef user_filters_udata* postf_udata = < user_filters_udata * > malloc(sizeof(user_filters_udata))
10961096 postf_udata.py_func = < char * > malloc(strlen(func_id) + 1 )
10971097 strcpy(postf_udata.py_func, func_id)
1098- postf_udata.input_cdtype = dtype_input.char.encode( " utf-8 " )[ 0 ]
1099- postf_udata.output_cdtype = dtype_output.char.encode( " utf-8 " )[ 0 ]
1098+ postf_udata.input_cdtype = dtype_input.num
1099+ postf_udata.output_cdtype = dtype_output.num
11001100 postf_udata.chunkshape = self .schunk.chunksize // self .schunk.typesize
11011101
11021102 postparams.user_data = postf_udata
@@ -1130,7 +1130,7 @@ cdef class SChunk:
11301130 fill_udata.py_func = < char * > malloc(strlen(func_id) + 1 )
11311131 strcpy(fill_udata.py_func, func_id)
11321132 fill_udata.inputs_id = inputs_id
1133- fill_udata.output_cdtype = np.dtype(dtype_output).char .encode( " utf-8 " )[ 0 ]
1133+ fill_udata.output_cdtype = np.dtype(dtype_output).num
11341134 fill_udata.chunkshape = self .schunk.chunksize // self .schunk.typesize
11351135
11361136 preparams.user_data = fill_udata
@@ -1159,8 +1159,8 @@ cdef class SChunk:
11591159 cdef user_filters_udata* pref_udata = < user_filters_udata* > malloc(sizeof(user_filters_udata))
11601160 pref_udata.py_func = < char * > malloc(strlen(func_id) + 1 )
11611161 strcpy(pref_udata.py_func, func_id)
1162- pref_udata.input_cdtype = dtype_input.char.encode( " utf-8 " )[ 0 ]
1163- pref_udata.output_cdtype = dtype_output.char.encode( " utf-8 " )[ 0 ]
1162+ pref_udata.input_cdtype = dtype_input.num
1163+ pref_udata.output_cdtype = dtype_output.num
11641164 pref_udata.chunkshape = self .schunk.chunksize // self .schunk.typesize
11651165
11661166 preparams.user_data = pref_udata
@@ -1182,39 +1182,16 @@ cdef class SChunk:
11821182 blosc2_schunk_free(self .schunk)
11831183
11841184
1185- char2dtype = {np.dtype(np.bool_).char : np.NPY_BOOL,
1186- np.dtype(np.int8).char : np.NPY_INT8,
1187- np.dtype(np.int16).char : np.NPY_INT16,
1188- np.dtype(np.int32).char : np.NPY_INT32,
1189- np.dtype(np.int64).char : np.NPY_INT64,
1190- np.dtype(np.uint8).char : np.NPY_UINT8,
1191- np.dtype(np.uint16).char : np.NPY_UINT16,
1192- np.dtype(np.uint32).char : np.NPY_UINT32,
1193- np.dtype(np.uint64).char : np.NPY_UINT64,
1194- np.dtype(np.float16).char : np.NPY_FLOAT16,
1195- np.dtype(np.float32).char : np.NPY_FLOAT32,
1196- np.dtype(np.float64).char : np.NPY_FLOAT64,
1197- np.dtype(np.complex64).char : np.NPY_COMPLEX64,
1198- np.dtype(np.complex128).char : np.NPY_COMPLEX128,
1199- np.dtype(np.datetime64).char : np.NPY_DATETIME,
1200- np.dtype(np.timedelta64).char : np.NPY_TIMEDELTA,
1201- }
1202-
12031185# postfilter
12041186cdef int general_postfilter(blosc2_postfilter_params * params):
12051187 cdef user_filters_udata * udata = < user_filters_udata * > params.user_data
12061188 cdef int nd = 1
12071189 cdef np.npy_intp dims = params.size // params.typesize
1208-
1209- input_cdtype = chr (udata.input_cdtype)
1210- output_cdtype = chr (udata.output_cdtype)
1211- input = np.PyArray_SimpleNewFromData(nd, & dims, char2dtype[input_cdtype], params.input)
1212- output = np.PyArray_SimpleNewFromData(nd, & dims, char2dtype[output_cdtype], params.output)
1190+ input = np.PyArray_SimpleNewFromData(nd, & dims, udata.input_cdtype, params.input)
1191+ output = np.PyArray_SimpleNewFromData(nd, & dims, udata.output_cdtype, params.output)
12131192 offset = params.nchunk * udata.chunkshape + params.offset // params.typesize
1214-
12151193 func_id = udata.py_func.decode()
12161194 blosc2.postfilter_funcs[func_id](input , output, offset)
1217-
12181195 return 0
12191196
12201197
@@ -1225,8 +1202,8 @@ cdef int general_filler(blosc2_prefilter_params *params):
12251202 cdef np.npy_intp dims = params.output_size // params.output_typesize
12261203
12271204 inputs_tuple = _ctypes.PyObj_FromPtr(udata.inputs_id)
1228- output_cdtype = chr (udata.output_cdtype)
1229- output = np.PyArray_SimpleNewFromData(nd, & dims, char2dtype[ output_cdtype] , params.output)
1205+
1206+ output = np.PyArray_SimpleNewFromData(nd, & dims, udata. output_cdtype, params.output)
12301207 offset = params.nchunk * udata.chunkshape + params.output_offset // params.output_typesize
12311208
12321209 inputs = []
@@ -1267,10 +1244,9 @@ cdef int general_prefilter(blosc2_prefilter_params *params):
12671244 cdef int nd = 1
12681245 cdef np.npy_intp dims = params.output_size // params.output_typesize
12691246
1270- input_cdtype = chr (udata.input_cdtype)
1271- output_cdtype = chr (udata.output_cdtype)
1272- input = np.PyArray_SimpleNewFromData(nd, & dims, char2dtype[input_cdtype], params.input)
1273- output = np.PyArray_SimpleNewFromData(nd, & dims, char2dtype[output_cdtype], params.output)
1247+
1248+ input = np.PyArray_SimpleNewFromData(nd, & dims, udata.input_cdtype, params.input)
1249+ output = np.PyArray_SimpleNewFromData(nd, & dims, udata.output_cdtype, params.output)
12741250 offset = params.nchunk * udata.chunkshape + params.output_offset // params.output_typesize
12751251
12761252 func_id = udata.py_func.decode()
0 commit comments