diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-06 22:18:01 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-06 22:18:06 +0200 |
commit | 9107e0ff64fc5788d90c0b44da3f7148cba4f966 (patch) | |
tree | 7f719b7958ae4c420ab02a3540734dee33d660a9 /serialize/magnum-vector.hpp | |
parent | ccc6b7fcb08f5a5713c2ac74a28113814b4c70b4 (diff) |
a
Diffstat (limited to 'serialize/magnum-vector.hpp')
-rw-r--r-- | serialize/magnum-vector.hpp | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/serialize/magnum-vector.hpp b/serialize/magnum-vector.hpp index eed37708..8ea5e13a 100644 --- a/serialize/magnum-vector.hpp +++ b/serialize/magnum-vector.hpp @@ -11,25 +11,32 @@ namespace nlohmann { template<std::size_t N, typename T> struct adl_serializer<Magnum::Math::Vector<N, T>> { - static void to_json(json& j, const Magnum::Math::Vector<N, T>& val) - { - std::array<T, N> array{}; - for (std::size_t i = 0; i < N; i++) - array[i] = val[i]; - j = array; - } - static void from_json(const json& j, Magnum::Math::Vector<N, T>& val) - { - std::array<T, N> array = j; - for (std::size_t i = 0; i < N; i++) - val[i] = array[i]; - } + using vec = Magnum::Math::Vector<N, T>; + static void to_json(json& j, const vec& val); + static void from_json(const json& j, vec& val); }; -template<typename T> struct adl_serializer<Magnum::Math::Vector2<T>> : adl_serializer<Magnum::Math::Vector<2, T>> {}; +template <std::size_t N, typename T> +void adl_serializer<Magnum::Math::Vector<N, T>>::to_json(json& j, const vec& val) +{ + std::array<T, N> array{}; + for (std::size_t i = 0; i < N; i++) + array[i] = val[i]; + j = array; +} + +template <std::size_t N, typename T> +void adl_serializer<Magnum::Math::Vector<N, T>>::from_json(const json& j, vec& val) +{ + std::array<T, N> array = j; + for (std::size_t i = 0; i < N; i++) + val[i] = array[i]; +} + template<typename T> struct adl_serializer<Magnum::Math::Vector3<T>> : adl_serializer<Magnum::Math::Vector<3, T>> {}; template<typename T> struct adl_serializer<Magnum::Math::Vector4<T>> : adl_serializer<Magnum::Math::Vector<4, T>> {}; template<typename T> struct adl_serializer<Magnum::Math::Color3<T>> : adl_serializer<Magnum::Math::Vector<3, T>> {}; template<typename T> struct adl_serializer<Magnum::Math::Color4<T>> : adl_serializer<Magnum::Math::Vector<4, T>> {}; +template<typename T> struct adl_serializer<Magnum::Math::Vector2<T>> : adl_serializer<Magnum::Math::Vector<2, T>> {}; } // namespace nlohmann |