Utils.h 666 B

123456789101112131415161718192021222324252627
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "PrimitiveTypes.h"
  5. #include <type_traits>
  6. namespace Urho3D
  7. {
  8. /// Converts enum class to u8 if underlying type is u8
  9. template<typename EnumClass>
  10. inline constexpr std::enable_if_t<std::is_same_v<std::underlying_type_t<EnumClass>, u8>, u8> ToU8(EnumClass enumClass)
  11. {
  12. return static_cast<u8>(enumClass);
  13. }
  14. /// Converts enum class to u32 if underlying type is u32
  15. template<typename EnumClass>
  16. inline constexpr std::enable_if_t<std::is_same_v<std::underlying_type_t<EnumClass>, u32>, u32> ToU32(EnumClass enumClass)
  17. {
  18. return static_cast<u32>(enumClass);
  19. }
  20. } // namespace Urho3D