add PIMathVectors JSON serialization
This commit is contained in:
@@ -38,14 +38,14 @@
|
||||
|
||||
template<typename T, typename std::enable_if<std::is_enum<T>::value, int>::type = 0>
|
||||
inline PIJSON piSerializeJSON(const T & v) {
|
||||
return PIJSON() = (int)v;
|
||||
return PIJSON() = (int)v;
|
||||
}
|
||||
|
||||
template<typename T,
|
||||
typename std::enable_if<!std::is_enum<T>::value, int>::type = 0,
|
||||
typename std::enable_if<std::is_arithmetic<T>::value, int>::type = 0>
|
||||
inline PIJSON piSerializeJSON(const T & v) {
|
||||
return PIJSON() = v;
|
||||
return PIJSON() = v;
|
||||
}
|
||||
|
||||
template<typename T,
|
||||
@@ -219,6 +219,22 @@ inline PIJSON piSerializeJSON(const PIMap<K, T> & v) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline PIJSON piSerializeJSON(const PIMathVector<T> & v) {
|
||||
PIJSON ret;
|
||||
for (uint i = 0; i < v.size(); ++i)
|
||||
ret << piSerializeJSON(v[i]);
|
||||
return ret;
|
||||
}
|
||||
|
||||
template<uint Size, typename T>
|
||||
inline PIJSON piSerializeJSON(const PIMathVectorT<Size, T> & v) {
|
||||
PIJSON ret;
|
||||
for (uint i = 0; i < v.size(); ++i)
|
||||
ret << piSerializeJSON(v[i]);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// ---
|
||||
// deserialize, piDeserializeJSON(T, PIJSON)
|
||||
@@ -229,14 +245,14 @@ inline PIJSON piSerializeJSON(const PIMap<K, T> & v) {
|
||||
|
||||
template<typename T, typename std::enable_if<std::is_enum<T>::value, int>::type = 0>
|
||||
inline void piDeserializeJSON(T & v, const PIJSON & js) {
|
||||
v = (T)js.toInt();
|
||||
v = (T)js.toInt();
|
||||
}
|
||||
|
||||
template<typename T,
|
||||
typename std::enable_if<!std::is_enum<T>::value, int>::type = 0,
|
||||
typename std::enable_if<std::is_arithmetic<T>::value, int>::type = 0>
|
||||
inline void piDeserializeJSON(T & v, const PIJSON & js) {
|
||||
v = js.value().value<T>();
|
||||
v = js.value().value<T>();
|
||||
}
|
||||
|
||||
template<typename T,
|
||||
@@ -398,6 +414,24 @@ inline void piDeserializeJSON(PIMap<K, T> & v, const PIJSON & js) {
|
||||
piDeserializeJSON(v[PIVariant(it.key()).value<K>()], it.value());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline void piDeserializeJSON(PIMathVector<T> & v, const PIJSON & js) {
|
||||
v = {};
|
||||
if (!js.isArray()) return;
|
||||
v = PIMathVector<T>(js.size());
|
||||
for (int i = 0; i < js.size(); ++i)
|
||||
piDeserializeJSON(v[i], js[i]);
|
||||
}
|
||||
|
||||
template<uint Size, typename T>
|
||||
inline void piDeserializeJSON(PIMathVectorT<Size, T> & v, const PIJSON & js) {
|
||||
v = PIMathVectorT<Size, T>();
|
||||
if (!js.isArray()) return;
|
||||
int cnt = piMini(js.size(), Size);
|
||||
for (int i = 0; i < cnt; ++i)
|
||||
piDeserializeJSON(v[i], js[i]);
|
||||
}
|
||||
|
||||
|
||||
// ---
|
||||
// PIJSON static wrapper
|
||||
|
||||
Reference in New Issue
Block a user