Hi,

it works exactly the same as for old style enums, you only have to prepend the 
enum class scope (color::) to reference the values in the c++ code.

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

color identity_(color x) { return x; }
BOOST_PYTHON_MODULE(enums)
{
    enum_<color>("color")
        .value("red", color::red)
        .value("green", color::green)
        .export_values()
        .value("blue", color::blue)
        ;

    def("identity", identity_);
}

What you can't do this way is to create new style python enums (see 
http://docs.python.org/3.4/library/enum.html), but as the documentation says, 
the python class is derived
from Python's int type.


Regards

Martin

Von: Cplusplus-sig 
[mailto:cplusplus-sig-bounces+martin.franzke=t-systems....@python.org] Im 
Auftrag von Deepankar Sharma
Gesendet: Samstag, 8. März 2014 21:18
An: cplusplus-sig@python.org
Betreff: [C++-sig] How to wrap class enums

Any pointers on how to expose class enums to Python? Given the following enum 
what would the boost code to expose it to python look like? The page at 
http://www.boost.org/doc/libs/1_55_0/libs/python/doc/v2/enum.html only lists 
examples of old style enums.


enum class t_functions
{
            ADD, SUB, MUL, DIV
};
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to