MalachScript/src/CoreData/ClassAttr.hpp

28 lines
730 B
C++

#ifndef MALACHSCRIPT_CLASSATTR_HPP
#define MALACHSCRIPT_CLASSATTR_HPP
#include <cstdint>
namespace MalachScript {
enum class ClassAttr : uint8_t {
None = 0,
Shared = 1 << 1,
Abstract = 1 << 2,
Final = 1 << 3,
External = 1 << 4,
};
class ClassAttrHelpers {
public:
constexpr inline static bool Contains(ClassAttr set, ClassAttr flag) {
return (static_cast<uint8_t>(set) & static_cast<uint8_t>(flag)) != 0;
}
constexpr inline static ClassAttr Set(ClassAttr set, ClassAttr flag) {
return static_cast<ClassAttr>(static_cast<uint8_t>(set) | static_cast<uint8_t>(flag));
}
};
}
#endif // MALACHSCRIPT_CLASSATTR_HPP