git-svn-id: svn://db.shs.com.ru/pip@782 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -372,3 +372,19 @@ std::ostream &operator <<(std::ostream & s, const PIByteArray & ba) {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
PIByteArray & operator >>(PIByteArray & s, PIByteArray & v) {
|
||||||
|
assert(s.size_s() >= 4);
|
||||||
|
int sz; s >> sz;
|
||||||
|
if (sz > s.size_s()) {
|
||||||
|
piCout << "[PIByteArray] Warning: operator >> wants too much data, discard!";
|
||||||
|
s.clear();
|
||||||
|
v.clear();
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
v.resize(sz);
|
||||||
|
if (sz > 0) memcpy(v.data(), s.data(), v.size());
|
||||||
|
s.remove(0, v.size());
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|||||||
@@ -209,17 +209,7 @@ inline PIByteArray & operator >>(PIByteArray & s, ldouble & v) {assert(s.size()
|
|||||||
//! \relatesalso PIByteArray \brief Restore operator
|
//! \relatesalso PIByteArray \brief Restore operator
|
||||||
template<typename T> inline PIByteArray & operator >>(PIByteArray & s, PIFlags<T> & v) {PBA_OPERATOR_FROM return s;}
|
template<typename T> inline PIByteArray & operator >>(PIByteArray & s, PIFlags<T> & v) {PBA_OPERATOR_FROM return s;}
|
||||||
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
|
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
|
||||||
inline PIByteArray & operator >>(PIByteArray & s, PIByteArray & v) {
|
PIByteArray & operator >>(PIByteArray & s, PIByteArray & v);
|
||||||
assert(s.size_s() >= 4);
|
|
||||||
int sz; s >> sz;
|
|
||||||
if (sz > s.size_s()) {
|
|
||||||
piCout << "[PIByteArray] Warning: operator >> want too much data!";
|
|
||||||
sz = s.size_s();
|
|
||||||
}
|
|
||||||
v.resize(sz);
|
|
||||||
if (sz > 0) memcpy(v.data(), s.data(), v.size());
|
|
||||||
s.remove(0, v.size());
|
|
||||||
return s;}
|
|
||||||
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
|
//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details
|
||||||
inline PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v) {assert(s.size_s() >= v.s); if (v.s > 0) memcpy((void*)(v.d), s.data(), v.s); s.remove(0, v.s); return s;}
|
inline PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v) {assert(s.size_s() >= v.s); if (v.s > 0) memcpy((void*)(v.d), s.data(), v.s); s.remove(0, v.s); return s;}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user