5#include <rosePublicConfig.h>
6#include <boost/format.hpp>
8#ifdef ROSE_ENABLE_BOOST_SERIALIZATION
9#include <boost/serialization/access.hpp>
12#include <Sawyer/Assert.h>
13#include <Sawyer/BitFlags.h>
63template<
typename E,
typename V =
int64_t>
84 std::string
toString(std::vector<int64_t> constants,
const char*(*stringifier)(int64_t))
const {
86 if (this->
vector() != Vector(0)) {
88 std::vector<Enum> members = this->
split(constants, leftovers );
89 for (Enum member: members) {
90 const char *name = stringifier(member);
91 ASSERT_not_null(name);
92 retval += std::string(retval.empty()?
"":
"|") + name;
94 if (leftovers != Vector(0))
95 retval += retval.empty()?
"":
"|" + (boost::format(
"%lx") % (
unsigned long)leftovers).str();
97 if (
const char* name = stringifier(0)) {
110makeBitFlags(E enumMember) {
111 return BitFlags<E>(enumMember);
Stores a vector of enum bit flags.
BitFlags()
Default constructor with all bits clear.
std::string toString(std::vector< int64_t > constants, const char *(*stringifier)(int64_t)) const
Convert to string.
BitFlags(Vector v)
Construct bit vector from value or bit.
Stores a vector of enum bit flags.
Vector vector() const
Current value of the bit vector.
std::vector< Enum > split() const
Split a vector into the individual bits values.