[C++-sig] Wrapping a function that takes class type, such as type_info
talljimbo at gmail.com
Sat Feb 25 04:56:57 CET 2012
On 02/24/2012 02:31 AM, Adam Preble wrote:
> I'll top post since I think this might get messy nice and fast
> otherwise. I found I couldn't get to a method wrapped to type a
> PyTypeObject* and only PyObject* would do.
Yeah, that's not surprising. You can also have it take a
boost::python::object; that's essentially a smart pointer for PyObject*.
> if(PyObject_IsInstance((PyObject*) internal_type, noIdea) == 1)
I think this is the only line that needs to change; you just need to use
PyObject_IsSubClass instead of PyObject_IsInstance.
Right now you're asking whether "internal_type" is an instance of
"noIdea", so the answer is only True when "noIdea" is "type".
I think you want to ask whether "internal_type" is a subclass of
"noIdea". And that's just:
if (PyObject_IsInstance((PyObject*)internal_type, noIdea) == 1)
More information about the Cplusplus-sig