65 lines
1.5 KiB
C++
65 lines
1.5 KiB
C++
#include "pip.h"
|
|
#include "pibinarystream.h"
|
|
//#include "stream.h"
|
|
//#include "ccm.h"
|
|
//#include "pisystemmonitor_.h"
|
|
|
|
using namespace PICoutManipulators;
|
|
|
|
class ByteArray: public PIBinaryStream<ByteArray> {
|
|
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<File> {
|
|
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<typename P> inline PIBinaryStream<P> & operator <<(PIBinaryStream<P> & s, const TS & v) {s << v.i; return s;}
|
|
template<typename P> inline PIBinaryStream<P> & operator >>(PIBinaryStream<P> & 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<TS> vi({TS(1,20), TS(3,40)});
|
|
PIVector<PIChar> 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;
|
|
}
|