From 2e024b532086339b0b83f58d30d919c3b832da33 Mon Sep 17 00:00:00 2001 From: kngwyu Date: Mon, 28 Dec 2020 22:33:18 +0900 Subject: [PATCH] Use inline fn instead of macro_rules to construct PyMemberDef --- src/pyclass.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/pyclass.rs b/src/pyclass.rs index 4c770fee527..f82c4e829c8 100644 --- a/src/pyclass.rs +++ b/src/pyclass.rs @@ -354,28 +354,27 @@ fn py_class_method_defs() -> ( /// Only works on Python 3.9 and up. #[cfg(Py_3_9)] fn py_class_members() -> Vec { - macro_rules! offset_def { - ($name:literal, $offset:expr) => { - ffi::structmember::PyMemberDef { - name: $name.as_ptr() as _, - type_code: ffi::structmember::T_PYSSIZET, - offset: $offset, - flags: ffi::structmember::READONLY, - doc: std::ptr::null_mut(), - } - }; + #[inline(always)] + fn offset_def(name: &'static str, offset: usize) -> ffi::structmember::PyMemberDef { + ffi::structmember::PyMemberDef { + name: name.as_ptr() as _, + type_code: ffi::structmember::T_PYSSIZET, + offset: offset as _, + flags: ffi::structmember::READONLY, + doc: std::ptr::null_mut(), + } } let mut members = Vec::new(); // __dict__ support if let Some(dict_offset) = PyCell::::dict_offset() { - members.push(offset_def!("__dictoffset__\0", dict_offset as _)); + members.push(offset_def("__dictoffset__\0", dict_offset)); } // weakref support if let Some(weakref_offset) = PyCell::::weakref_offset() { - members.push(offset_def!("__weaklistoffset__\0", weakref_offset as _)); + members.push(offset_def("__weaklistoffset__\0", weakref_offset)); } if !members.is_empty() {