add PIMathVectors JSON serialization
This commit is contained in:
@@ -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)
|
||||
@@ -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