[C++-sig] Getting a Python type object for a c++ type in wrapper code...

Alex Mohr amohr at pixar.com
Tue Oct 4 21:21:57 CEST 2005


Of course!  That makes perfect sense.  Thanks Nick and Mike.

The only remaining question is if there's an easy way to do this with 
types like python's 'float' type instead of my own.  Would I have to 
create something like boost::python::long_ for floats, or is there a 
better way?

Thanks again,

Alex


Nick Rasmussen wrote:
> Perhaps something like:
> 
> #include <Python.h>
> #include <boost/python.hpp>
> 
> using namespace boost::python;
> 
> struct Foo {
> 
> };
> 
> struct Bar {
>   static object fooType;
> };
> 
> object Bar::fooType;
> 
> BOOST_PYTHON_MODULE(test)
> {
>   class_<Foo> fooType("Foo");
>   Bar::fooType = fooType;
>   class_<Bar> barType("Bar");
>   barType
>     .def_readonly("fooType",&Bar::fooType);
> }
> 
> -nick
> 
> 
> On Tue, 04 Oct 2005, Alex Mohr wrote:
> 
> 
>>Hi folks,
>>
>>I'm a relative boost.python newbie but I've been doing a ton with it and 
>>I'm having a blast.  Thanks for such an awesome package.
>>
>>Here's my first newbie question.
>>
>>Suppose I have two C++ classes that I'm wrapping -- Foo and Bar.  In the 
>>wrapper for Bar, I want there to be an attribute which holds the type 
>>Foo.  That is, from python I wan to be able to say:
>>
>> >>> Module.Bar.fooType == Module.Foo
>>True
>>
>>Something like def_readonly("fooType", <var-which-holds-type-for-Foo>) 
>>would be ideal.  I'd also like to be able to do this for python types, 
>>like python's float.  Is there a simple way to do this in my 
>>Boost.Python code?
>>
>>Thanks,
>>
>>Alex
>>
>>_______________________________________________
>>C++-sig mailing list
>>C++-sig at python.org
>>http://mail.python.org/mailman/listinfo/c++-sig
> 
> _______________________________________________
> C++-sig mailing list
> C++-sig at python.org
> http://mail.python.org/mailman/listinfo/c++-sig




More information about the Cplusplus-sig mailing list