mirror of
https://github.com/pybind/pybind11.git
synced 2026-05-21 21:39:33 +00:00
pybind11::args should have been derived from tuple
args was derived from list, but cpp_function::dispatcher sends a tuple to it->impl (line #346 and #392 in pybind11.h). As a result args::size() and args::operator[] don't work at all. On my mac args::size() returns -1. Making args a subclass of tuple fixes it.
This commit is contained in:
@@ -491,7 +491,7 @@ public:
|
||||
if (!m_ptr) pybind11_fail("Could not allocate tuple object!");
|
||||
}
|
||||
size_t size() const { return (size_t) PyTuple_Size(m_ptr); }
|
||||
detail::tuple_accessor operator[](size_t index) const { return detail::tuple_accessor(ptr(), index); }
|
||||
detail::tuple_accessor operator[](size_t index) const { return detail::tuple_accessor(*this, index); }
|
||||
};
|
||||
|
||||
class dict : public object {
|
||||
@@ -517,7 +517,7 @@ public:
|
||||
void append(const object &object) const { PyList_Append(m_ptr, object.ptr()); }
|
||||
};
|
||||
|
||||
class args : public list { PYBIND11_OBJECT_DEFAULT(args, list, PyList_Check) };
|
||||
class args : public tuple { PYBIND11_OBJECT_DEFAULT(args, tuple, PyTuple_Check) };
|
||||
class kwargs : public dict { PYBIND11_OBJECT_DEFAULT(kwargs, dict, PyDict_Check) };
|
||||
|
||||
class set : public object {
|
||||
|
||||
Reference in New Issue
Block a user