|
Boost.PythonHeader <boost/python/enum.hpp> |
enum_
enum_
synopsisenum_
constructorsenum_
modifier functions<boost/python/enum.hpp>
defines the
interface through which users expose their C++ enumeration types
to Python. It declares the
enum_
class template, which is parameterized on the
enumeration type being exposed.
enum_<T>
Creates a Python class derived from Python's int
type which is associated with the C++ type passed as its first
parameter.
enum_
synopsisnamespace boost { namespace python { template <class T> class enum_ : public object { enum_(char const* name, char const* doc = 0); enum_<T>& value(char const* name, T); enum_<T>& export_values(); }; }}
enum_
constructorsenum_(char const* name, char const* doc=0);
name
is an ntbs which conforms to Python's identifier
naming rules.
enum_
object
holding a Python extension type derived from int
which is named name
. The
name
d attribute of the current scope is bound to the new
extension type.enum_
modifier functionsinline enum_<T>& value(char const* name, T x);
name
is an ntbs which conforms to Python's identifier
naming rules.
x
to the type's dictionary as the
name
d attribute.*this
inline enum_<T>& export_values();
scope
with the
same names and values as all enumeration values exposed so far
by calling value()
.*this
C++ module definition
#include <boost/python/enum.hpp> #include <boost/python/def.hpp> #include <boost/python/module.hpp> using namespace boost::python; enum color { red = 1, green = 2, blue = 4 }; color identity_(color x) { return x; } BOOST_PYTHON_MODULE(enums) { enum_<color>("color") .value("red", red) .value("green", green) .export_values() .value("blue", blue) ; def("identity", identity_); }
Interactive Python:
>>> from enums import * >>> identity(red) enums.color.red >>> identity(color.red) enums.color.red >>> identity(green) enums.color.green >>> identity(color.green) enums.color.green >>> identity(blue) Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name blue' is not defined >>> identity(color.blue) enums.color.blue >>> identity(color(1)) enums.color.red >>> identity(color(2)) enums.color.green >>> identity(color(3)) enums.color(3) >>> identity(color(4)) enums.color.blue >>> identity(1) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: bad argument type for built-in operation
© Copyright Dave Abrahams 2002.