Better Enums - Clean reflective enums for C++ (original) (raw)

enable

declare

parse format

count iterate

switch

safe cast

during compilation

#include <enum.h>

BETTERENUM(Channel, int, Red = 1, Green, Blue)

Channel c = Channel::fromstring("Red"); const char *s = c.tostring();

size_t n = Channel::size(); for (Channel c : Channel::values()) { run_some_function(c); }

switch (c) { case Channel::Red: // ... case Channel::Green: // ... case Channel::Blue: // ... }

Channel c = Channel::fromintegral(3);

constexpr Channel c = Channel::fromstring("Blue");

Better Enums is a single, lightweight header file that makes your compiler generate_reflective_ enum types.

That means you can easily convert enums to and from strings, validate them, and loop over them. In C++11, you can do it all at compile time.

It's what built-in enums ought to support. Better Enums simply adds the missing features. And, it is based on the best known techniques, thoroughly tested, fast, portable, and documented exhaustively.

To use it, just include enum.h and begin thetutorial!

Highlights

Documentation