PIChunkStream
git-svn-id: svn://db.shs.com.ru/pip@176 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
49
doc/examples/pichunkstream.cpp
Normal file
49
doc/examples/pichunkstream.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
#include "pip.h"
|
||||
|
||||
//! [struct]
|
||||
// Your struct
|
||||
struct S {
|
||||
int i;
|
||||
float f;
|
||||
PIString s;
|
||||
};
|
||||
|
||||
// Operators
|
||||
PIByteArray & operator <<(PIByteArray & b, const S & s) {b << s.i << s.f << s.s; return b;}
|
||||
PIByteArray & operator >>(PIByteArray & b, S & s) {b >> s.i >> s.f >> s.s; return b;}
|
||||
//! [struct]
|
||||
//! [write]
|
||||
// Write chunk stream
|
||||
S s;
|
||||
s.i = 99;
|
||||
s.f = 0.01;
|
||||
s.s = "SSS";
|
||||
PIVector<float> f;
|
||||
f << -1. << 2.5 << 11.;
|
||||
// write some data to empty stream
|
||||
PIChunkStream cs;
|
||||
cs << cs.chunk(1, int(10))
|
||||
<< cs.chunk(2, PIString("text"))
|
||||
<< cs.chunk(4, f)
|
||||
<< cs.chunk(3, s);
|
||||
// now you can take cs.data() and send or place it somewhere ...
|
||||
//! [write]
|
||||
//! [read]
|
||||
// create stream for read, cs from upper code
|
||||
PIByteArray ba(cs.data());
|
||||
PIChunkStream cs2(ba);
|
||||
int i(0);
|
||||
PIString str;
|
||||
S s;
|
||||
PIVector<float> f;
|
||||
// read from stream
|
||||
while (!cs2.atEnd()) {
|
||||
switch (cs2.read()) {
|
||||
case 1: i = cs2.getData<int>(); break;
|
||||
case 2: str = cs2.getData<PIString>(); break;
|
||||
case 3: s = cs2.getData<S>(); break;
|
||||
case 4: f = cs2.getData<PIVector<float> >(); break;
|
||||
}
|
||||
}
|
||||
piCout << i << str << f << s.i << s.f << s.s;
|
||||
//! [read]
|
||||
Reference in New Issue
Block a user