* stream): s(stream) {} PITextStream
& newLine() {s->binaryStreamAppend('\n'); return *this;} PITextStream
& space() {s->binaryStreamAppend(' '); return *this;} void append(const PIString & v) { if (v.isEmpty()) return; auto utf8 = v.toUTF8(); s->binaryStreamAppend(utf8.data(), utf8.size()); } void append(const PIConstChars & v) {if (!v.isEmpty()) s->binaryStreamAppend(v.data(), v.size());} void append(char v) {s->binaryStreamAppend(v);} void append(const char * v) {append(PIConstChars(v));} void append(bool v) {append(v ? "true" : "false");} void append(int v) {append(PIString::fromNumber(v));} void append(llong v) {append(PIString::fromNumber(v));} void append(float v) {append(PIString::fromNumber(v));} void append(double v) {append(PIString::fromNumber(v));} char takeChar(bool * ok) {return (char)s->binaryStreamTakeByte(ok);} bool textStreamSkipSpaces() { //if () } PIString textStreamTakeLine() { } PIString textStreamTakeWord(); private: PIBinaryStream
* s;
};
template createPITextStream(PIBinaryStream * stream) {return PITextStream (stream);}
template & operator <<(PITextStream & s, bool v) {s.append(v); return s;}
template & operator <<(PITextStream & s, char v) {s.append(v); return s;}
template & operator <<(PITextStream & s, uchar v) {s.append((int)v); return s;}
template & operator <<(PITextStream & s, short v) {s.append((int)v); return s;}
template & operator <<(PITextStream & s, ushort v) {s.append((int)v); return s;}
template & operator <<(PITextStream & s, int v) {s.append((int)v); return s;}
template & operator <<(PITextStream & s, uint v) {s.append((int)v); return s;}
template & operator <<(PITextStream & s, llong v) {s.append((llong)v); return s;}
template & operator <<(PITextStream & s, ullong v) {s.append((llong)v); return s;}
template & operator <<(PITextStream & s, float v) {s.append(v); return s;}
template & operator <<(PITextStream & s, double v) {s.append(v); return s;}
template & operator <<(PITextStream & s, const char * v) {s.append(v); return s;}
template & operator <<(PITextStream & s, const PIConstChars & v) {s.append(v); return s;}
template & operator <<(PITextStream & s, const PIString & v) {s.append(v); return s;}
#endif