Flags.h 639 B

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