GetPrimitiveTypeOfType.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Jolt/Core/RTTI.h>
  6. JPH_NAMESPACE_BEGIN
  7. /// Helper functions to get the underlying RTTI type of a type (so e.g. Array<sometype> will return sometype)
  8. template <class T>
  9. const RTTI *GetPrimitiveTypeOfType(T *)
  10. {
  11. return GetRTTIOfType((T *)nullptr);
  12. }
  13. template <class T>
  14. const RTTI *GetPrimitiveTypeOfType(T **)
  15. {
  16. return GetRTTIOfType((T *)nullptr);
  17. }
  18. template <class T>
  19. const RTTI *GetPrimitiveTypeOfType(Ref<T> *)
  20. {
  21. return GetRTTIOfType((T *)nullptr);
  22. }
  23. template <class T>
  24. const RTTI *GetPrimitiveTypeOfType(RefConst<T> *)
  25. {
  26. return GetRTTIOfType((T *)nullptr);
  27. }
  28. template <class T>
  29. const RTTI *GetPrimitiveTypeOfType(Array<T> *)
  30. {
  31. return GetPrimitiveTypeOfType((T *)nullptr);
  32. }
  33. template <class T, uint N>
  34. const RTTI *GetPrimitiveTypeOfType(StaticArray<T, N> *)
  35. {
  36. return GetPrimitiveTypeOfType((T *)nullptr);
  37. }
  38. template <class T, uint N>
  39. const RTTI *GetPrimitiveTypeOfType(T (*)[N])
  40. {
  41. return GetPrimitiveTypeOfType((T *)nullptr);
  42. }
  43. JPH_NAMESPACE_END