Differences between revisions 2 and 3
Revision 2 as of 2002-11-15 19:46:18
Size: 937
Editor: MikeRovner
Comment: v2
Revision 3 as of 2008-11-15 14:01:18
Size: 937
Editor: localhost
Comment: converted to 1.6 markup
No differences found!

For example, let's define an object in module namespace to represent enum:

#include <boost/python.hpp>

using namespace boost::python;

enum color { red = 1, green = 2, blue = 4 };

color identity_(color x) { return x; }

BOOST_PYTHON_MODULE(enum_ext)
{
    enum_<color>("color")
        .value("red", red)
        .value("green", green)
        .value("blue", blue)
        ;
    
    def("identity", identity_);
}

The usage is follows:

>>> from enum_ext import *

>>> identity(color.red)
enum_ext.color.red

>>> identity(color.green)
enum_ext.color.green

>>> identity(color.blue)
enum_ext.color.blue

>>> identity(color(1))
enum_ext.color.red

>>> identity(color(2))
enum_ext.color.green

>>> identity(color(3))
enum_ext.color(3)

>>> identity(color(4))
enum_ext.color.blue

>>> try: identity(1)
... except TypeError: pass
... else: print 'expected a TypeError'

boost.python/WrappingEnums (last edited 2008-11-15 14:01:18 by localhost)

Unable to edit the page? See the FrontPage for instructions.