bitmask operations (2)

Sorry, _REGEX_BITMASK_OPS is from Dinkumware's library, so disregard:-( What is the boost way to define an enum enum EBitmask { ebitmaskFLAGA=1, ebitmaskFLAGB=2 }; such that operations like ebitmask |= ebitmaskFLAGA; can be used? In boost.regex, it is currently implemented specifically for match_flags: #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) typedef unsigned long match_flag_type; #else typedef match_flags match_flag_type; #ifdef __cplusplus inline match_flags operator&(match_flags m1, match_flags m2) { return static_cast<match_flags>(static_cast<boost::int32_t>(m1) & static_cast<boost::int32_t>(m2)); } inline match_flags operator|(match_flags m1, match_flags m2) { return static_cast<match_flags>(static_cast<boost::int32_t>(m1) | static_cast<boost::int32_t>(m2)); } inline match_flags operator^(match_flags m1, match_flags m2) { return static_cast<match_flags>(static_cast<boost::int32_t>(m1) ^ static_cast<boost::int32_t>(m2)); } inline match_flags operator~(match_flags m1) { return static_cast<match_flags>(~static_cast<boost::int32_t>(m1)); } inline match_flags& operator&=(match_flags& m1, match_flags m2) { m1 = m1&m2; return m1; } inline match_flags& operator|=(match_flags& m1, match_flags m2) { m1 = m1|m2; return m1; } inline match_flags& operator^=(match_flags& m1, match_flags m2) { m1 = m1^m2; return m1; } #endif #endif Regards, Arno -- Dr. Arno Schoedl · aschoedl@think-cell.com Technical Director think-cell Software GmbH · Invalidenstr. 34 · 10115 Berlin, Germany http://www.think-cell.com · phone +49-30-666473-10 · toll-free (US) +1-800-891-8091 Directors: Dr. Markus Hannebauer, Dr. Arno Schoedl · Amtsgericht Charlottenburg, HRB 85229
participants (1)
-
Arno Schödl