Files
pip/doc/examples/pibytearray.cpp

64 lines
1.5 KiB
C++

#include "pip.h"
void _() {
//! [0]
PIByteArray ba;
int i = -1, j = 2;
float f = 1.;
PIString text("123");
ba << i << j << f << text; // form binary data
piCout << "data =" << ba;
i = j = 0; // clear variables
f = 0; // clear variables
text.clear(); // clear variables
piCout << i << j << f << text; // show variables
ba >> i >> j >> f >> text; // restore data
piCout << i << j << f << text; // show variables
piCout << "data =" << ba;
//! [0]
//! [1]
struct MyType {
MyType(int i_ = 0, const PIString & t_ = PIString()) {
m_i = i_;
m_text = t_;
}
int m_i;
PIString m_text;
};
inline PIByteArray & operator <<(PIByteArray & s, const MyType & v) {s << v.m_i << v.m_text; return s;}
inline PIByteArray & operator >>(PIByteArray & s, MyType & v) {s >> v.m_i >> v.m_text; return s;}
PIByteArray ba;
PIVector<MyType> my_vec;
my_vec << MyType(1, "s1") << MyType(10, "s10"); // add to vector
ba << my_vec; // store to byte array
piCout << "data =" << ba;
my_vec.clear(); // clear vector
ba >> my_vec; // restore from byte array
//! [1]
//! [2]
PIByteArray ba;
const char * chars = "8 bytes";
ba << PIByteArray::RawData(chars, 8); // form binary data
piCout << "data =" << ba;
char rchars[16];
memset(rchars, 0, 16); // clear data
ba >> PIByteArray::RawData(rchars, 8); // restore data
piCout << rchars;
piCout << "data =" << ba;
//! [2]
//! [3]
PIByteArray ba, sba;
uchar uc(127);
sba << uc; // byte array with one byte
ba << sba; // stream operator
piCout << ba; // result
// {1, 0, 0, 0, 127}
ba.clear();
ba.append(sba);
piCout << ba; // result
// {127}
//! [3]
};