unaligned-inl.h 695 B

12345678910111213141516171819202122232425262728293031
  1. #ifndef UNALIGNED_INL_H_
  2. #error "Direct inclusion of this file is not allowed, include unaligned.h"
  3. // For the sake of sane code completion.
  4. #include "unaligned.h"
  5. #endif
  6. #include <cstring>
  7. namespace NYT {
  8. ////////////////////////////////////////////////////////////////////////////////
  9. template <class T>
  10. requires std::is_trivial_v<T>
  11. T UnalignedLoad(const T* ptr)
  12. {
  13. T value;
  14. std::memcpy(&value, ptr, sizeof(T));
  15. return value;
  16. }
  17. template <class T>
  18. requires std::is_trivial_v<T>
  19. void UnalignedStore(T* ptr, const T& value)
  20. {
  21. std::memcpy(ptr, &value, sizeof(T));
  22. }
  23. ////////////////////////////////////////////////////////////////////////////////
  24. } // namespace NYT