#include "pip.h" #include "pibinarystream.h" //#include "stream.h" //#include "ccm.h" //#include "pisystemmonitor_.h" using namespace PICoutManipulators; class ByteArray: public PIBinaryStream { public: PIByteArray data; void appendImp(const void * d, size_t s) { data.append(d, s); } void takeImp(void * d, size_t s) { memcpy(d, data.data(), s); data.remove(0, s); } }; class File: public PIBinaryStream { public: PIFile file; void appendImp(const void * d, size_t s) { file.write(d, s); } void takeImp(void * d, size_t s) { file.read(d, s); } }; struct TS { TS(int v0 = -1, float v1 = -1, PIString v2 = "") {i = v0; f = v1; s = v2;} int i; float f; PIString s; }; PICout operator << (PICout c, const TS & v) {c << '{' << v.i << ", " << v.f << '}'; return c;} template inline PIBinaryStream

& operator <<(PIBinaryStream

& s, const TS & v) {s << v.i; return s;} template inline PIBinaryStream

& operator >>(PIBinaryStream

& s, TS & v) {s >> v.i; return s;} int main(int argc, char * argv[]) { ByteArray ba; /*ProcessStatsFixed_ ps; ba << ps; piCout << "s" << ba.data;*/ //File f; //f.file.open("_", PIIODevice::ReadWrite); //f.file.clear(); //PIVector vi({TS(1,20), TS(3,40)}); PIVector vi({'a', 'b', 'c'}); ba << vi; piCout << "src" << vi; piCout << "s" << ba.data; vi.fill(' '); vi.clear(); //f.file.seekToBegin(); ba >> vi; piCout << "res" << vi; piCout << "r" << ba.data; return 0; }