summaryrefslogtreecommitdiffhomepage
path: root/serialize/magnum-vector.hpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-10-06 22:18:01 +0200
committerStanislaw Halik <sthalik@misaki.pl>2022-10-06 22:18:06 +0200
commit9107e0ff64fc5788d90c0b44da3f7148cba4f966 (patch)
tree7f719b7958ae4c420ab02a3540734dee33d660a9 /serialize/magnum-vector.hpp
parentccc6b7fcb08f5a5713c2ac74a28113814b4c70b4 (diff)
a
Diffstat (limited to 'serialize/magnum-vector.hpp')
-rw-r--r--serialize/magnum-vector.hpp35
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