|
|
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_
synopsis
namespace boost { namespace python
{
template <class T>
class enum_ : public object
{
enum_(char const* name);
enum_<T>& value(char const* name, T);
enum_<T>& export_values();
};
}}
enum_
constructorsenum_(char const* name);
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
named 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
named attribute*thisinline enum_<T>& export_values();
scope with the
same names and values as all enumeration values exposed so far
by calling value()*thisC++ 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.