Boost logo

Boost :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-03-26 10:27:04

Neal D. Becker wrote:

> Actually, just:
> ("angle", po::value(&angle))

Yea, you right :-)

> Now I'm trying to figure out how to handle an enum. I can't really find a
> good solution so far.

Well, you can specialize validator for the enum type and then use a map from
enumerator name to value.

Let me try to code it:

map<string, my_enum> my_enum_values;
bool demand_my_enum_values()
        my_enum_values["first"] = first;
        return true;

void validator<my_enum>::operator()(any& v, const vector<string>& xs)
        // Initialize table of the first use.
        static bool b = demand_my_enum_values();

        string s(get_single_string(xs));
        if (my_enum_values.count(s) == 0)
           throw ....;
           v = any<my_enum>(my_enum_values);

Uhm... does not look overly nice. If we could steal Boost.Python syntax:

        .value("red", red)
        .value("green", green)

for describing enums and make validator use such descriptions, if you be
great. But Boost.Python's enum_ heavily depends on Boost.Python, it seems.

- Volodya

Boost list run by bdawes at, gregod at, cpdaniel at, john at