mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 13:15:12 +00:00
improved signature names for subclasses of pybind11::handle
This commit is contained in:
parent
d0325bbd97
commit
56e9f4942b
@ -467,6 +467,9 @@ protected:
|
||||
holder_type holder;
|
||||
};
|
||||
|
||||
template <typename T> struct handle_type_name { static PYBIND11_DESCR name() { return _<T>(); } };
|
||||
template <> struct handle_type_name<bytes> { static PYBIND11_DESCR name() { return _(PYBIND11_BYTES_NAME); } };
|
||||
|
||||
template <typename type>
|
||||
struct type_caster<type, typename std::enable_if<std::is_base_of<handle, type>::value>::type> {
|
||||
public:
|
||||
@ -477,10 +480,9 @@ public:
|
||||
bool load(PyObject *src, bool /* convert */) { value = type(src, true); return value.check(); }
|
||||
|
||||
static PyObject *cast(const handle &src, return_value_policy /* policy */, PyObject * /* parent */) {
|
||||
src.inc_ref();
|
||||
return (PyObject *) src.ptr();
|
||||
src.inc_ref(); return (PyObject *) src.ptr();
|
||||
}
|
||||
PYBIND11_TYPE_CASTER(type, _<type>());
|
||||
PYBIND11_TYPE_CASTER(type, handle_type_name<type>::name());
|
||||
};
|
||||
|
||||
NAMESPACE_END(detail)
|
||||
|
@ -94,6 +94,7 @@
|
||||
#define PYBIND11_LONG_CHECK(o) PyLong_Check(o)
|
||||
#define PYBIND11_LONG_AS_LONGLONG(o) PyLong_AsLongLong(o)
|
||||
#define PYBIND11_LONG_AS_UNSIGNED_LONGLONG(o) PyLong_AsUnsignedLongLong(o)
|
||||
#define PYBIND11_BYTES_NAME "bytes"
|
||||
#define PYBIND11_STRING_NAME "str"
|
||||
#define PYBIND11_SLICE_OBJECT PyObject
|
||||
#else
|
||||
@ -105,6 +106,7 @@
|
||||
#define PYBIND11_LONG_CHECK(o) (PyInt_Check(o) || PyLong_Check(o))
|
||||
#define PYBIND11_LONG_AS_LONGLONG(o) (PyInt_Check(o) ? (long long) PyLong_AsLong(o) : PyLong_AsLongLong(o))
|
||||
#define PYBIND11_LONG_AS_UNSIGNED_LONGLONG(o) (PyInt_Check(o) ? (unsigned long long) PyLong_AsUnsignedLong(o) : PyLong_AsUnsignedLongLong(o))
|
||||
#define PYBIND11_BYTES_NAME "str"
|
||||
#define PYBIND11_STRING_NAME "unicode"
|
||||
#define PYBIND11_SLICE_OBJECT PySliceObject
|
||||
#endif
|
||||
|
@ -150,6 +150,10 @@ DECL_FMT(std::complex<double>, NPY_CDOUBLE);
|
||||
|
||||
NAMESPACE_BEGIN(detail)
|
||||
|
||||
template <typename T> struct handle_type_name<array_t<T>> {
|
||||
static PYBIND11_DESCR name() { return _("array[") + type_caster<T>::name() + _("]"); }
|
||||
};
|
||||
|
||||
template <typename Func, typename Return, typename... Args>
|
||||
struct vectorize_helper {
|
||||
typename std::remove_reference<Func>::type f;
|
||||
|
Loading…
Reference in New Issue
Block a user