1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#ifndef OPENMW_COMPONENTS_DEBUG_WRITEFLAGS_H
#define OPENMW_COMPONENTS_DEBUG_WRITEFLAGS_H
#include <iomanip>
#include <ostream>
#include <string_view>
namespace Debug
{
template <class T>
struct FlagString
{
T mValue;
std::string_view mString;
};
template <class T, class FlagStrings>
std::ostream& writeFlags(std::ostream& stream, const T& value, const FlagStrings& flagStrings)
{
bool first = true;
for (const auto& v : flagStrings)
{
if ((value & v.mValue) == 0)
continue;
if (first)
first = false;
else
stream << " | ";
stream << v.mString;
}
if (first)
stream << "[None]";
return stream << " (0x" << std::hex << value << std::resetiosflags(std::ios_base::hex) << ')';
}
}
#endif
|