Flags.h 672 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef ANKI_UTIL_FLAGS_H
  2. #define ANKI_UTIL_FLAGS_H
  3. #include "anki/util/StdTypes.h"
  4. namespace anki {
  5. /// Easy flag manipulation
  6. template<typename T>
  7. class Flags
  8. {
  9. public:
  10. typedef T Value;
  11. Flags()
  12. {}
  13. Flags(T mask_)
  14. : mask(mask_)
  15. {}
  16. /// @name Flag manipulation
  17. /// @{
  18. void enableFlag(Value flag)
  19. {
  20. mask |= flag;
  21. }
  22. void enableFlag(Value flag, Bool enable)
  23. {
  24. mask = (enable) ? mask | flag : mask & ~flag;
  25. }
  26. void disableFlag(Value flag)
  27. {
  28. mask &= ~flag;
  29. }
  30. Bool isFlagEnabled(Value flag) const
  31. {
  32. return mask & flag;
  33. }
  34. Value getFlagsBitmask() const
  35. {
  36. return mask;
  37. }
  38. /// @}
  39. protected:
  40. Value mask = 0;
  41. };
  42. } // end namespace anki
  43. #endif