23 #ifndef __CLRX_INPUTOUTPUT_H__ 24 #define __CLRX_INPUTOUTPUT_H__ 53 pos_type
seekoff(off_type off, std::ios_base::seekdir dir,
54 std::ios_base::openmode which);
57 pos_type
seekpos(pos_type pos, std::ios_base::openmode which);
81 {
return egptr()-eback(); }
87 std::streambuf* setbuf(char_type* buffer, std::streamsize size);
109 int_type overflow(int_type ch);
111 std::streambuf* setbuf(char_type* buffer, std::streamsize size);
118 std::vector<char>& vector;
133 int_type overflow(int_type ch);
135 std::streambuf* setbuf(char_type* buffer, std::streamsize size);
302 std::unique_ptr<char[]> buffer;
310 bufSize(_bufSize), buffer(new char[_bufSize])
326 is.read(buffer.get(), bufSize);
327 endPos = is.gcount();
328 if (endPos == 0 || is.bad())
329 return std::streambuf::traits_type::eof();
331 return (
cxuchar)buffer.get()[pos++];
337 size_t toRead = std::min(n, endPos-pos);
338 ::memcpy(buf, buffer.get()+pos, toRead);
341 is.read(buf+toRead, n-toRead);
342 toRead += is.gcount();
356 std::unique_ptr<char[]> buffer;
365 bufSize(_bufSize), buffer(new char[_bufSize]), written(0)
381 os.write(buffer.get(), endPos);
388 if (toReserve > bufSize-endPos)
390 return buffer.get() + endPos;
401 void write(
size_t length,
const char*
string)
403 if (length > bufSize-endPos)
406 os.write(
string, length);
410 ::memcpy(buffer.get()+endPos, string, length);
418 { write(::strlen(
string),
string); }
423 { write(
sizeof(T), reinterpret_cast<const char*>(&t)); }
428 { write(
sizeof(T)*size, reinterpret_cast<const char*>(t)); }
433 if (endPos == bufSize)
435 buffer[endPos++] = c;
445 size_t bufNum = std::min(
size_t(bufSize-endPos), count);
446 ::memset(buffer.get()+endPos, c, bufNum);
449 if (endPos == bufSize)
std::string & getString() const
get a held string
Definition: InputOutput.h:102
memory stream buffer
Definition: InputOutput.h:44
specialized output stream that holds external char-vector for memory saving
Definition: InputOutput.h:276
non copyable and non movable base structure (class)
Definition: Utilities.h:46
uint64_t getWritten() const
get written bytes number
Definition: InputOutput.h:375
specialized input stream that holds external array for memory saving
Definition: InputOutput.h:139
std::ios_base::openmode openMode
open mode
Definition: InputOutput.h:47
std::vector< char > & getVector() const
get a held char vector
Definition: InputOutput.h:287
string stream buffer that holds external string for memory saving
Definition: InputOutput.h:91
std::string & getString() const
get a held string
Definition: InputOutput.h:223
pos_type seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which)
seekoff implementation
fast and direct output buffer
Definition: InputOutput.h:350
void write(size_t length, const char *string)
write sequence of characters
Definition: InputOutput.h:401
std::string & getString() const
get a held string
Definition: InputOutput.h:239
specialized output stream that holds external array for memory saving
Definition: InputOutput.h:177
void writeObject(const T &t)
write object of type T
Definition: InputOutput.h:422
void forward(cxuint toWrite)
finish reservation and go forward
Definition: InputOutput.h:394
void writeString(const char *string)
write string
Definition: InputOutput.h:417
std::vector< char > & getVector() const
get a held char vector
Definition: InputOutput.h:271
std::ostream & getOStream()
get output stream
Definition: InputOutput.h:459
size_t getArraySize() const
get a held array size
Definition: InputOutput.h:188
specialized input stream that holds external string for memory saving
Definition: InputOutput.h:196
unsigned char cxuchar
unsigned character (unsigned byte)
Definition: Config.h:227
std::streamsize showmanyc()
showmanyc implementation
~MemoryStreamBuf()=default
destructor
int_type pbackfail(int_type ch)
pbackfail implementation
size_t getArraySize() const
get a held array size
Definition: InputOutput.h:150
const std::string & getString() const
get a held string
Definition: InputOutput.h:207
const char * getArray() const
get a held array content
Definition: InputOutput.h:153
specialized output stream that holds external string for memory saving
Definition: InputOutput.h:228
specialized input/output stream that holds external array for memory saving
Definition: InputOutput.h:158
main namespace
Definition: AsmDefs.h:38
~FastOutputBuffer()
destructor
Definition: InputOutput.h:368
unsigned int cxuint
unsigned int
Definition: Config.h:237
std::vector< char > & getVector()
get a held char vector
Definition: InputOutput.h:129
array stream buffer that holds external static array for memory saving
Definition: InputOutput.h:71
specialized input/output stream that holds external char-vector for memory saving ...
Definition: InputOutput.h:260
char * getArray() const
get a held array content
Definition: InputOutput.h:83
size_t getArraySize() const
get a held array size
Definition: InputOutput.h:169
specialized input/output stream that holds external string for memory saving
Definition: InputOutput.h:212
utilities for other libraries and programs
specialized input stream that holds external char-vector for memory saving
Definition: InputOutput.h:244
void fill(size_t num, char c)
fill (put num c character)
Definition: InputOutput.h:440
size_t getArraySize() const
get a held array size
Definition: InputOutput.h:80
pos_type seekpos(pos_type pos, std::ios_base::openmode which)
seekpos implementation
char * getArray() const
get a held array content
Definition: InputOutput.h:191
char * getArray() const
get a held array content
Definition: InputOutput.h:172
const std::vector< char > & getVector() const
get a held char vector
Definition: InputOutput.h:255
std::string & getString()
get a held string
Definition: InputOutput.h:105
MemoryStreamBuf(std::ios_base::openmode openMode)
constructor
std::vector< char > & getVector() const
get a held char vector
Definition: InputOutput.h:126
void writeArray(size_t size, const T *t)
write array of objects
Definition: InputOutput.h:427
void safePBump(ssize_t offset)
safe pbump version
void put(char c)
put single character
Definition: InputOutput.h:431
void flush()
write output buffer
Definition: InputOutput.h:379
char * reserve(cxuint toReserve)
reserve and write out buffer if too few free bytes in buffer
Definition: InputOutput.h:386
const std::ostream & getOStream() const
get output stream
Definition: InputOutput.h:456
vector char stream buffer external char-vector for memory saving
Definition: InputOutput.h:115
FastOutputBuffer(cxuint _bufSize, std::ostream &output)
constructor with inBufSize and output
Definition: InputOutput.h:364