all prepare work done

This commit is contained in:
2023-02-09 17:16:58 +08:00
parent 7fe2bd8f5c
commit 6bda076a1d
4 changed files with 76 additions and 18 deletions

View File

@ -2,9 +2,28 @@
#include <cinttypes>
#include <cstdint>
#include <cstdarg>
#include <type_traits>
namespace LibCmo {
namespace EnumHelper {
template<typename TEnum>
inline TEnum FlagEnumAdd(TEnum e, ...) {
TEnum result = e;
va_list argptr;
va_start(argptr, e);
result = static_cast<TEnum>(static_cast<std::underlying_type_t<TEnum>>(result) | static_cast<std::underlying_type_t<TEnum>>(va_arg(argptr, TEnum)));
va_end(argptr);
return result;
}
template<typename TEnum>
inline bool FlagEnumHas(TEnum e, TEnum probe) {
return static_cast<bool>(static_cast<std::underlying_type_t<TEnum>>(e) & static_cast<std::underlying_type_t<TEnum>>(probe));
}
}
using CK_ID = uint32_t;
enum class CK_CLASSID : uint32_t {