fix pybind

This commit is contained in:
blueloveTH 2025-06-05 21:26:05 +08:00
parent 6b80817a98
commit 8fe2e4457f
2 changed files with 19 additions and 21 deletions

View File

@ -30,8 +30,8 @@ public:
auto& info = type_info::of<T>(); auto& info = type_info::of<T>();
info.name = name; info.name = name;
py_newfunction( py_bind(
py_tpgetmagic(this->index(), __new__), py_tpobject(this->index()),
"__new__(type, *args, **kwargs)", "__new__(type, *args, **kwargs)",
[](int, py_Ref stack) { [](int, py_Ref stack) {
auto cls = py_offset(stack, 0); auto cls = py_offset(stack, 0);
@ -44,9 +44,7 @@ public:
py_newobject(py_retval(), steal<type>(cls).index(), slot, sizeof(instance)); py_newobject(py_retval(), steal<type>(cls).index(), slot, sizeof(instance));
new (data) instance{instance::Flag::Own, operator new (info->size), info}; new (data) instance{instance::Flag::Own, operator new (info->size), info};
return true; return true;
}, });
nullptr,
0);
} }
/// bind constructor /// bind constructor

View File

@ -101,25 +101,25 @@ inline object::operator bool () const { return raise_call<py_bool>(m_ptr); }
return object::from_ret(); \ return object::from_ret(); \
} }
PKBIND_BINARY_OPERATOR(==, __eq__, __eq__) PKBIND_BINARY_OPERATOR(==, py_name("__eq__"), py_name("__eq__"))
PKBIND_BINARY_OPERATOR(!=, __ne__, __ne__) PKBIND_BINARY_OPERATOR(!=, py_name("__ne__"), py_name("__ne__"))
PKBIND_BINARY_OPERATOR(<, __lt__, __gt__) PKBIND_BINARY_OPERATOR(<, py_name("__lt__"), py_name("__gt__"))
PKBIND_BINARY_OPERATOR(<=, __le__, __ge__) PKBIND_BINARY_OPERATOR(<=, py_name("__le__"), py_name("__ge__"))
PKBIND_BINARY_OPERATOR(>, __gt__, __lt__) PKBIND_BINARY_OPERATOR(>, py_name("__gt__"), py_name("__lt__"))
PKBIND_BINARY_OPERATOR(>=, __ge__, __le__) PKBIND_BINARY_OPERATOR(>=, py_name("__ge__"), py_name("__le__"))
PKBIND_BINARY_OPERATOR(+, __add__, __radd__) PKBIND_BINARY_OPERATOR(+, py_name("__add__"), py_name("__radd__"))
PKBIND_BINARY_OPERATOR(-, __sub__, __rsub__) PKBIND_BINARY_OPERATOR(-, py_name("__sub__"), py_name("__rsub__"))
PKBIND_BINARY_OPERATOR(*, __mul__, __rmul__) PKBIND_BINARY_OPERATOR(*, py_name("__mul__"), py_name("__rmul__"))
PKBIND_BINARY_OPERATOR(/, __truediv__, __rtruediv__) PKBIND_BINARY_OPERATOR(/, py_name("__truediv__"), py_name("__rtruediv__"))
PKBIND_BINARY_OPERATOR(%, __mod__, __rmod__) PKBIND_BINARY_OPERATOR(%, py_name("__mod__"), py_name("__rmod__"))
// FIXME: support __rand__ ... // FIXME: support __rand__ ...
PKBIND_BINARY_OPERATOR(&, __and__, 0) PKBIND_BINARY_OPERATOR(&, py_name("__and__"), nullptr)
PKBIND_BINARY_OPERATOR(|, __or__, 0) PKBIND_BINARY_OPERATOR(|, py_name("__or__"), nullptr)
PKBIND_BINARY_OPERATOR(^, __xor__, 0) PKBIND_BINARY_OPERATOR(^, py_name("__xor__"), nullptr)
PKBIND_BINARY_OPERATOR(<<, __lshift__, 0) PKBIND_BINARY_OPERATOR(<<, py_name("__lshift__"), nullptr)
PKBIND_BINARY_OPERATOR(>>, __rshift__, 0) PKBIND_BINARY_OPERATOR(>>, py_name("__rshift__"), nullptr)
#undef PKBIND_BINARY_OPERATOR #undef PKBIND_BINARY_OPERATOR