Skip to content

Commit b1f11de

Browse files
committed
Fix the definition of PyUFuncObject to be consistent with ABI history
1 parent f4a13b1 commit b1f11de

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/npyffi/objects.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,14 +384,32 @@ pub struct PyUFuncObject {
384384
pub core_offsets: *mut c_int,
385385
pub core_signature: *mut c_char,
386386
pub type_resolver: PyUFunc_TypeResolutionFunc,
387+
388+
#[cfg(not(Numpy_2_0))]
389+
pub legacy_inner_loop_selector: PyUFunc_LegacyInnerLoopSelectionFunc,
390+
#[cfg(all(Numpy_2_0, not(Numpy_2_2)))]
391+
pub reserved2: *mut c_void,
392+
#[cfg(Numpy_2_2)]
387393
pub dict: *mut PyObject,
388394

389-
#[cfg(all(Py_3_8, not(Py_LIMITED_API)))]
395+
#[cfg(not(Numpy_1_21))]
396+
pub reserved2: *mut c_void,
397+
#[cfg(all(Numpy_1_21, not(Numpy_1_22), Py_3_8))]
398+
pub vectorcall: Option<vectorcallfunc>,
399+
#[cfg(all(Numpy_1_21, not(Numpy_1_22), not(Py_3_8)))]
400+
pub reserved2: *mut c_void,
401+
#[cfg(all(Numpy_1_22, Py_3_8, not(Py_LIMITED_API)))]
390402
pub vectorcall: Option<vectorcallfunc>,
391-
#[cfg(not(all(Py_3_8, not(Py_LIMITED_API))))]
403+
#[cfg(all(Numpy_1_22, not(all(Py_3_8, not(Py_LIMITED_API)))))]
392404
pub vectorcall: *mut c_void,
393405

406+
#[cfg(not(Numpy_1_22))]
407+
pub masked_inner_loop_selector: PyUFunc_MaskedInnerLoopSelectionFunc,
408+
#[cfg(all(Numpy_1_22, not(Numpy_2_0)))]
409+
pub _always_null_previously_masked_innerloop_selector: *mut c_void,
410+
#[cfg(Numpy_2_0)]
394411
pub reserved3: *mut c_void,
412+
395413
pub op_flags: *mut npy_uint32,
396414
pub iter_flags: npy_uint32,
397415

@@ -432,6 +450,8 @@ pub type PyUFunc_TypeResolutionFunc = Option<
432450
*mut *mut PyArray_Descr,
433451
) -> c_int,
434452
>;
453+
454+
#[cfg(not(Numpy_2_0))]
435455
pub type PyUFunc_LegacyInnerLoopSelectionFunc = Option<
436456
unsafe extern "C" fn(
437457
*mut PyUFuncObject,
@@ -441,6 +461,8 @@ pub type PyUFunc_LegacyInnerLoopSelectionFunc = Option<
441461
*mut c_int,
442462
) -> c_int,
443463
>;
464+
465+
#[cfg(not(Numpy_1_22))]
444466
pub type PyUFunc_MaskedInnerLoopSelectionFunc = Option<
445467
unsafe extern "C" fn(
446468
*mut PyUFuncObject,

0 commit comments

Comments
 (0)