8 #ifndef INCL_evo_iobase_h 9 #define INCL_evo_iobase_h 91 virtual ulong
readbin(
void* buf, ulong size) {
113 virtual ulong
writebin(
const void* buf, ulong size) {
254 virtual Size
writequoted(
const char* buf, Size size,
char delim,
bool optional=
false) {
477 { out << nl;
return *
this; }
486 { out << nl;
return *
this; }
493 { out << nl;
return *
this; }
502 if (out.error() ==
ENone)
514 { fmt.
null = null;
return *
this; }
527 out.writetext(
"true", 4);
529 out.writetext(
"false", 5);
540 if (out.error() ==
ENone)
541 out.writechar(ch, 1);
550 if (out.error() ==
ENone)
562 if (out.error() ==
ENone) {
577 if (out.error() ==
ENone) {
581 }
else if (*val !=
'\0')
582 out.writefmtstr(val, (ulong)strlen(val), fmt.
field);
593 template<
class TSize>
594 This& operator<<(const ListBase<char,TSize>& str) {
595 if (out.error() ==
ENone) {
596 if (str.data_ == NULL) {
599 }
else if (str.size_ !=
'\0')
600 out.writefmtstr(str.data_, str.size_, fmt.
field);
635 { out.writefmtnum(num, fmt.
num_int, &fmt.
field);
return *
this; }
639 { out.writefmtnum(num, fmt.
num_int, &fmt.
field);
return *
this; }
643 { out.writefmtnum(num, fmt.
num_int, &fmt.
field);
return *
this; }
647 { out.writefmtnum(num, fmt.
num_int, &fmt.
field);
return *
this; }
656 { out.writefmtnumu(num, fmt.
num_int, &fmt.
field);
return *
this; }
660 { out.writefmtnumu(num, fmt.
num_int, &fmt.
field);
return *
this; }
664 { out.writefmtnumu(num, fmt.
num_int, &fmt.
field);
return *
this; }
668 { out.writefmtnumu(num, fmt.
num_int, &fmt.
field);
return *
this; }
679 This& operator<<(const IntegerT<U>& num) {
713 { out.writefmtnumf(num, fmt.
num_flt, &fmt.
field);
return *
this; }
717 { out.writefmtnumf(num, fmt.
num_flt, &fmt.
field);
return *
this; }
721 { out.writefmtnumf(num, fmt.
num_flt, &fmt.
field);
return *
this; }
731 This& operator<<(const FloatT<U>& num) {
747 { out.writefmtnumu((ulong)fmtptr.
ptr, fmtptr.
fmt, &fmt.
field);
return *
this; }
756 { out.writefmtdump(fmtdump);
return *
this; }
825 return device_.handle;
836 return bufrd_.readbuf;
856 void attach(
Open mode, Handle handle,
bool owned=
true,
bool flushlines=
false) {
858 device_.handle = handle;
859 if (device_.isopen()) {
860 init(mode, flushlines);
872 if (device_.isopen()) {
874 bufwr_.flush(device_);
879 return device_.detach();
889 if (device_.isopen()) {
890 if (bufwr_.used > 0) {
891 error_ = bufwr_.flush(device_);
907 return device_.isopen();
911 if (T::STREAM_SEEKABLE && rwlast_ != rwlREAD && !readprep())
913 size = bufrd_.readbin(
error_, device_, buf, size);
919 if (T::STREAM_SEEKABLE && rwlast_ != rwlREAD && !readprep())
921 size = bufrd_.readtext(
error_, device_, buf, size);
927 if (T::STREAM_SEEKABLE && rwlast_ != rwlREAD && !readprep())
929 error_ = bufrd_.readline(str, device_, maxlen);
938 error_ = bufwr_.flush(device_);
947 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
949 size = bufwr_.writebin(
error_, device_, buf, size);
955 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
957 count = bufwr_.writetext_char(
error_, device_, ch, count);
963 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
965 size = bufwr_.writetext(
error_, device_, buf, size);
971 bool quote_optional =
false;
975 if (quote_optional && optional)
979 const char ch =
"'\"`"[(uint)type];
980 const Size result = size + 2;
988 const char* str = &
"'''\"\"\"```"[(uint(type) - 3) * 3];
989 const Size result = size + 6;
995 const char* str =
"`\x7F";
996 const Size result = size + 4;
1010 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1012 ulong writtensize = bufwr_.writetext(
error_, device_, buf, size), writtensize2;
1014 if ( writtensize == 0 || (writtensize2=bufwr_.writebin(
error_, device_, bufwr_.newline, bufwr_.newlinesize)) == 0 ) {
1018 return writtensize + writtensize2;
1025 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1027 if (size > bufwr_.size) {
1031 if (bufwr_.avail() < size) {
1032 error_ = bufwr_.flush(device_);
1039 return bufwr_.data + bufwr_.used;
1043 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1045 if (reserve_size > bufwr_.avail()) {
1046 error_ = bufwr_.flush(device_);
1051 if (reserve_size > bufwr_.size)
1052 available = (
Size)bufwr_.size;
1054 available = reserve_size;
1056 available = reserve_size;
1057 if (reserve_size == 0)
1061 return bufwr_.data + bufwr_.used;
1065 bufwr_.used += written_size;
1066 assert( bufwr_.used <= bufwr_.size );
1068 error_ = bufwr_.flush(device_);
1074 if (reserve_size > bufwr_.size) {
1075 available = (
Size)bufwr_.size;
1077 available = reserve_size;
1078 if (reserve_size == 0)
1086 bufwr_.used += size;
1087 assert( bufwr_.used <= bufwr_.size );
1100 template<
class TNum>
1103 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1105 error_ = bufwr_.writenum(device_, num, base);
1125 template<
class TNum>
1128 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1130 error_ = bufwr_.writenumu(device_, num, base);
1150 template<
class TNum>
1153 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1155 error_ = bufwr_.writenumf(device_, num, precision);
1174 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1176 error_ = bufwr_.writefmtchar(device_, ch, count, field);
1196 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1198 error_ = bufwr_.writefmtstr(device_, buf, size, field);
1216 template<
class TNum>
1219 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1221 error_ = bufwr_.writefmtnum(device_, num, fmt, field);
1242 template<
class TNum>
1245 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1247 error_ = bufwr_.writefmtnumu(device_, num, fmt, field);
1268 template<
class TNum>
1271 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1273 error_ = bufwr_.writefmtnumf(device_, num, fmt, field);
1294 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1296 error_ = bufwr_.writefmtdump(device_, fmt, bufwr_.newline, bufwr_.newlinesize);
1318 if (T::STREAM_SEEKABLE && rwlast_ != rwlWRITE && !writeprep())
1360 writebin(bufwr_.newline, bufwr_.newlinesize);
1373 const char* nl_str = nl.
getnewline(nl_size, bufwr_.newline, bufwr_.newlinesize);
1404 bufwr_.writetext(
error_, device_,
"false", 5);
1429 writetext(str, (ulong)strlen(str));
1454 template<
class TSize>
1455 This& operator<<(const ListBase<char,TSize>& str) {
1457 writetext(str.data_, str.size_);
1469 { writenum(num);
return *
this; }
1479 { writenum(num);
return *
this; }
1489 { writenum(num);
return *
this; }
1499 { writenumu(num);
return *
this; }
1509 { writenumu(num);
return *
this; }
1519 { writenumu(num);
return *
this; }
1531 This& operator<<(const IntegerT<U>& num) {
1533 writenum(num.value());
1545 { writenumf(num);
return *
this; }
1555 { writenumf(num);
return *
this; }
1565 { writenumf(num);
return *
this; }
1577 This& operator<<(const FloatT<U>& num) {
1579 writenumf(num.value());
1591 { writechar(fmt.
ch, fmt.
count);
return *
this; }
1608 { writefmtnum(fmt.
num, fmt.
fmt);
return *
this; }
1612 { writefmtnum(fmt.
num, fmt.
fmt);
return *
this; }
1616 { writefmtnum(fmt.
num, fmt.
fmt);
return *
this; }
1620 { writefmtnum(fmt.
num, fmt.
fmt);
return *
this; }
1624 { writefmtnumu(fmt.
num, fmt.
fmt);
return *
this; }
1628 { writefmtnumu(fmt.
num, fmt.
fmt);
return *
this; }
1632 { writefmtnumu(fmt.
num, fmt.
fmt);
return *
this; }
1636 { writefmtnumu(fmt.
num, fmt.
fmt);
return *
this; }
1640 { writefmtnumf(fmt.
num, fmt.
fmt);
return *
this; }
1644 { writefmtnumf(fmt.
num, fmt.
fmt);
return *
this; }
1648 { writefmtnumf(fmt.
num, fmt.
fmt);
return *
this; }
1652 This& operator<<(const FmtFieldNum<U>& fmt) {
1654 writefmtnum(fmt.num.num, fmt.num.fmt, &fmt.field);
1656 writefmtnumu(fmt.num.num, fmt.num.fmt, &fmt.field);
1662 This& operator<<(const FmtFieldFloat<U>& fmt)
1663 { writefmtnumf(fmt.num.num, fmt.num.fmt, &fmt.field);
return *
this; }
1670 { writefmtnumu((ulong)fmtptr.
ptr, fmtptr.
fmt);
return *
this; }
1677 { writefmtdump(fmt);
return *
this; }
1701 bufwr_.
open(flushlines);
1706 This& operator=(
const This&);
1710 if (rwlast_ != rwlNONE) {
1715 ulongl newpos = device_.pos(
error_);
1739 if (rwlast_ != rwlNONE) {
1740 savepos_ = device_.pos(
error_);
This & operator<<(const SubString &str)
Write substring to stream.
Definition: iobase.h:1439
void init(Open mode, bool flushlines=false)
Initialize and reset buffers for a new stream.
Definition: iobase.h:1695
void open(bool flushlines_val=false)
Initialize and open for output (writing).
Definition: sysio.h:1051
void excep(bool val)
Set whether exceptions are enabled.
Definition: iobase.h:59
const char * getnewline(Newline newline=NL)
Get newline string for given type.
Definition: sys.h:793
This & operator<<(ldouble num)
Write formatted floating-point number to stream.
Definition: iobase.h:1564
virtual ulong writetext(const char *buf, ulong size)
Write text output to stream.
Definition: iobase.h:236
This & operator<<(const FmtFloat &fmt)
Write formatted number field to stream.
Definition: iobase.h:1639
This & operator<<(const FmtULong &fmt)
Write formatted number field to stream.
Definition: iobase.h:1631
This & operator<<(ulongl num)
Write formatted number to stream.
Definition: iobase.h:1518
Holds integer formatting attributes.
Definition: str.h:2589
This & operator<<(const FmtInt &fmt)
Write formatted number field to stream.
Definition: iobase.h:1611
Holds a Newline value that can be null, which implicitly converts to NL_SYS (system default newline)...
Definition: sys.h:813
This & operator<<(Newline nl)
Write an explicit newline and flush stream.
Definition: iobase.h:1343
Invalid argument or data.
Definition: sys.h:1123
This & operator<<(bool val)
Append a bool value to stream.
Definition: iobase.h:1399
ulong readtext(char *buf, ulong size)
Read text input from stream.
Definition: iobase.h:918
bool excep() const
Get whether exceptions are enabled.
Definition: iobase.h:52
bool open_writable(Open open)
Check whether open mode is writable.
Definition: sysio.h:220
Formatting attributes (used internally).
Definition: str.h:2886
bool writefmtdump(const FmtDump &fmt)
Write formatted data dump.
Definition: iobase.h:1292
This & operator<<(NewlineDefault nl)
Write default newline and flush stream.
Definition: iobase.h:1357
Single-quotes: '
Definition: strscan.h:1898
virtual ~StreamBase()
Destructor.
Definition: iobase.h:153
Error error_
Last error code.
Definition: iobase.h:133
This & operator<<(longl num)
Write formatted number to stream.
Definition: iobase.h:1488
Automatic floating point precision – either normal decimal notation or E notation, whichever is shorter (default)
Definition: str.h:2343
This & operator<<(Flush)
Flush buffer by writing to stream.
Definition: iobase.h:1386
bool writenum(TNum num, int base=fDEC)
Write formatted signed number.
Definition: iobase.h:1101
virtual ulong readtext(char *buf, ulong size)
Read text input from stream.
Definition: iobase.h:170
Backtick: `
Definition: strscan.h:1900
Holds string to use when formatting null values.
Definition: str.h:2406
Triple backtick: ```
Definition: strscan.h:1903
Triple single-quotes: '''
Definition: strscan.h:1901
This & operator<<(const FmtULongL &fmt)
Write formatted number field to stream.
Definition: iobase.h:1635
virtual bool flush()
Flush any pending output in stream write buffer, if buffered.
Definition: iobase.h:127
char * write_direct_flush(Size &available, Size written_size, Size reserve_size)
Definition: iobase.h:1064
uint count
Character repeat count.
Definition: str.h:2916
Open
Open mode for files and streams.
Definition: sysio.h:190
bool excep_
Whether to throw exceptions.
Definition: iobase.h:134
bool open_readable(Open open)
Check whether open mode is readable.
Definition: sysio.h:213
ulong writechar(char ch, ulong count=1)
Write repeat character as text output to stream.
Definition: iobase.h:954
bool write_direct_finish(Size size)
Finish writing directly to buffer.
Definition: iobase.h:1085
Base text and binary stream interface.
Definition: iobase.h:145
Output stream exception for stream write errors, see Exception.
Definition: sys.h:1401
Newline
Newline type.
Definition: sys.h:748
virtual bool isopen() const
Get whether stream is open.
Definition: iobase.h:73
#define EVO_THROW_ERR_CHECK(TYPE, MSG, ERROR, COND)
Throw an Evo exception with error code if COND is true.
Definition: sys.h:1513
T device_
I/O device.
Definition: iobase.h:1687
bool writefmtstr(const char *buf, ulong size, const FmtSetField &field)
Write text with field alignment.
Definition: iobase.h:1194
virtual ulong writechar(char ch, ulong count=1)
Write repeat character as text output to stream.
Definition: iobase.h:219
void open()
Initialize and open for input (reading).
Definition: sysio.h:690
RawBuffer & bufread()
Advanced: Access primary read buffer.
Definition: iobase.h:835
ulong readbin(void *buf, ulong size)
Read binary input from stream.
Definition: iobase.h:910
char * write_direct(Size size)
Get pointer for writing directly to buffer to append data.
Definition: iobase.h:1024
Basic integer type.
Definition: type.h:980
~Stream()
Destructor.
Definition: iobase.h:817
FmtSetFloat fmt
Definition: str.h:3156
ulong writetext(const char *buf, ulong size)
Write text output to stream.
Definition: iobase.h:962
IoWriter bufwr_
Buffered writer.
Definition: iobase.h:1690
virtual bool readline(String &str, ulong maxlen=0)
Read text line input from stream.
Definition: iobase.h:201
bool operator!() const
Negation operator checks whether an error was set by a previous operation.
Definition: iobase.h:45
No error.
Definition: sys.h:1115
Reached end of resource (not an error)
Definition: sys.h:1116
#define EVO_EXCEPTIONS
Whether to throw exceptions on error by default.
Definition: evo_config.h:35
IoBase()
Constructor.
Definition: iobase.h:32
virtual ulong writebin(const void *buf, ulong size)
Write binary output to stream.
Definition: iobase.h:113
This Out
Type returned by write_out()
Definition: iobase.h:795
Error
General Evo error code stored in exceptions, or used directly when exceptions are disabled...
Definition: sys.h:1113
uint getnewlinesize(Newline newline=NL)
Get newline string size for given type.
Definition: sys.h:804
FmtAlign
Formatting alignment.
Definition: str.h:2356
This & operator<<(const FmtUShort &fmt)
Write formatted number field to stream.
Definition: iobase.h:1623
bool close()
Close stream.
Definition: iobase.h:888
This & operator<<(const char *str)
Write terminated string to stream.
Definition: iobase.h:1427
Seek from beginning.
Definition: sysio.h:204
This & operator<<(const FmtChar &fmt)
Write repeated character to stream.
Definition: iobase.h:1590
Base 10: decimal (default)
Definition: str.h:2323
ulong writeline(const char *buf, ulong size)
Write text line output to stream.
Definition: iobase.h:1009
String container.
Definition: string.h:674
Safe bool base class.
Definition: type.h:73
Buffered reader for IoDevice (used internally).
Definition: sysio.h:658
Flush
Signals an output stream to flush pending data.
Definition: sys.h:739
This & operator<<(const FmtShort &fmt)
Write formatted number field to stream.
Definition: iobase.h:1607
This & operator<<(const FmtLongL &fmt)
Write formatted number field to stream.
Definition: iobase.h:1619
Evo system I/O implementation.
bool writefmtnumu(TNum num, const FmtSetInt &fmt, const FmtSetField *field=NULL)
Write formatted unsigned number with field alignment.
Definition: iobase.h:1243
Base binary stream interface.
Definition: iobase.h:30
virtual Size writequoted(const char *buf, Size size, char delim, bool optional=false)
Write quoted text output to string.
Definition: iobase.h:254
void merge(const FmtSetInt &src)
Merge source attributes (used internally).
Definition: str.h:2626
const char * str
Pointer to string for formatting null values, ignored if size is 0.
Definition: str.h:2407
RawBuffer readbuf
Primary read buffer – filtering may involve additional buffers.
Definition: sysio.h:661
bool writenumf(TNum num, int precision=fPREC_AUTO)
Write formatted floating-point number.
Definition: iobase.h:1151
bool writefmtdump(const FmtDump &fmt, Newline nl)
Write formatted data dump with explicit newline type.
Definition: iobase.h:1316
void merge(const FmtSetField &src)
Merge source attributes (used internally).
Definition: str.h:2514
Explicitly format an integer.
Definition: str.h:3065
StreamFormatter< This > Format
Stream output formatter with state.
Definition: iobase.h:797
const char * getnewline() const
Get newline string pointer for current value.
Definition: sys.h:885
ulong writebin(const void *buf, ulong size)
Write binary output to stream.
Definition: iobase.h:946
FmtAlign align
Field alignment type (default: fLEFT)
Definition: str.h:2482
virtual ~IoBase()
Destructor.
Definition: iobase.h:36
T::Handle Handle
Low-level handle type (OS dependent)
Definition: iobase.h:793
Error flush(T &out)
Flush buffer by writing to device.
Definition: sysio.h:1071
FmtPrecision
Formatting floating point precision type.
Definition: str.h:2341
This & operator<<(const FmtLong &fmt)
Write formatted number field to stream.
Definition: iobase.h:1615
FmtSetInt fmt
Formatting attributes.
Definition: str.h:3266
ulong Size
Data size type (ulong)
Definition: iobase.h:146
Handle detach()
Detach current stream.
Definition: iobase.h:871
Double-quotes: "
Definition: strscan.h:1899
void merge(const FmtSetFloat &src)
Merge from source (used internally).
Definition: str.h:2806
Definition: iobase.h:1683
Triple double-quotes: """
Definition: strscan.h:1902
Evo C++ Library namespace.
Definition: alg.h:11
Stream(Newline newlines=NL_SYS)
Constructor.
Definition: iobase.h:805
void attach(Open mode, Handle handle, bool owned=true, bool flushlines=false)
Attach existing stream.
Definition: iobase.h:856
Stream< T > This
This stream type.
Definition: iobase.h:794
Holds floating point formatting attributes.
Definition: str.h:2775
RwLast rwlast_
Read/Write: Used to track last operation when switching between read/write.
Definition: iobase.h:1692
This & operator<<(uint num)
Write formatted number to stream.
Definition: iobase.h:1498
Explicitly format a string.
Definition: str.h:2931
bool writenumu(TNum num, int base=fDEC)
Write formatted unsigned number.
Definition: iobase.h:1126
This & operator<<(int num)
Write formatted number to stream.
Definition: iobase.h:1468
Out & write_out()
Definition: iobase.h:1021
virtual ulong readbin(void *buf, ulong size)
Read binary input from stream.
Definition: iobase.h:91
Input/Output stream implementation.
Definition: iobase.h:791
T num
Definition: str.h:3155
FmtSetInt fmt
Formatting attributes.
Definition: str.h:3072
virtual ulong writeline(const char *buf, ulong size)
Write text line output to stream.
Definition: iobase.h:274
int precision
Floating point precision (number of digits after decimal), fPREC_AUTO for automatic (default: fPREC_A...
Definition: str.h:2776
Handle handle() const
Get stream handle for low-level calls.
Definition: iobase.h:824
static const Newline NL_SYS
Current system newline type.
Definition: sys.h:763
Buffered writer for IoDevice (used internally).
Definition: sysio.h:1023
T * data_
Data pointer, NULL if null.
Definition: sys.h:979
This & operator<<(float num)
Write formatted floating-point number to stream.
Definition: iobase.h:1544
Backtick followed by DEL char (7F) – last resort (rare)
Definition: strscan.h:1904
Explicitly format a repeated character.
Definition: str.h:2914
bool writefmtchar(char ch, ulong count, const FmtSetField &field)
Write formatted and/or repeated character.
Definition: iobase.h:1172
Error error() const
Get error code from last operation.
Definition: iobase.h:66
T::ExceptionOutT ExceptionOutT
Stream output exception type
Definition: iobase.h:800
This & operator<<(const FmtFloatD &fmt)
Write formatted number field to stream.
Definition: iobase.h:1643
bool owned_
Whether handle is owned (to be closed here)
Definition: iobase.h:1688
int base
Base for formatting (default: fDEC)
Definition: str.h:2590
Default newline type, implicitly converts to NL_SYS (system default newline).
Definition: sys.h:773
This & operator<<(const NewlineValue &nl)
Write newline value and flush stream.
Definition: iobase.h:1370
Explicitly format a pointer.
Definition: str.h:3264
FmtWidth
Formatting field width.
Definition: str.h:2367
ulong curbuf_offset
Bytes read from curbuf, i.e. buffer start offset.
Definition: sysio.h:663
StrSizeT size
String (str) size for formatting null values, 0 for none/empty
Definition: str.h:2408
This & operator<<(const FmtDump &fmt)
Write formatted data dump to stream.
Definition: iobase.h:1676
This & operator<<(const FmtString &fmt)
Write formatted string field to stream.
Definition: iobase.h:1597
FmtSetField field
Field alignment attributes.
Definition: str.h:2890
This & operator<<(char ch)
Write character to stream.
Definition: iobase.h:1415
char * write_direct_multi(Size &available, Size reserve_size)
Definition: iobase.h:1042
static Type get(const char *data, ulong data_size)
Definition: strscan.h:1917
FmtBasePrefix prefix
Formatting prefix type (default: fPREFIX0)
Definition: str.h:2591
TSize size_
Data size as item count, 0 if empty or null.
Definition: sys.h:980
StringBase str
Definition: str.h:2936
StreamBase()
Constructor.
Definition: iobase.h:149
bool isopen() const
Get whether stream is open.
Definition: iobase.h:906
FmtBasePrefix
Formatting integer base prefix type.
Definition: str.h:2331
int width
Field width to align in (default: 0)
Definition: str.h:2483
This & operator<<(const FmtFloatL &fmt)
Write formatted number field to stream.
Definition: iobase.h:1647
This & operator<<(ulong num)
Write formatted number to stream.
Definition: iobase.h:1508
const void * ptr
Pointer to format.
Definition: str.h:3265
IoWriter & bufwrite()
Advanced: Access primary write buffer.
Definition: iobase.h:846
This & operator<<(const FmtPtr &fmtptr)
Writer formatted pointer field to stream.
Definition: iobase.h:1669
virtual char * write_direct(Size size)
Get pointer for writing directly to buffer to append data.
Definition: iobase.h:290
This & operator<<(double num)
Write formatted floating-point number to stream.
Definition: iobase.h:1554
ulongl savepos_
Read/Write: Used to save buffered read position when switching between read/write.
Definition: iobase.h:1691
FmtSetInt num_int
Integer attributes.
Definition: str.h:2888
Reference and access existing string data.
Definition: substring.h:229
char ch
Character to format.
Definition: str.h:2915
FmtSetField fmt
Definition: str.h:2937
virtual bool write_direct_finish(Size size)
Finish writing directly to buffer.
Definition: iobase.h:341
bool writefmtnumf(TNum num, const FmtSetFloat &fmt, const FmtSetField *field=NULL)
Write formatted floating point number with field alignment.
Definition: iobase.h:1269
bool readline(String &str, ulong maxlen=0)
Read text line input from stream.
Definition: iobase.h:926
bool writefmtnum(TNum num, const FmtSetInt &fmt, const FmtSetField *field=NULL)
Write formatted signed number with field alignment.
Definition: iobase.h:1217
This & operator<<(const FmtUInt &fmt)
Write formatted number field to stream.
Definition: iobase.h:1627
Explicitly format a floating pointer number.
Definition: str.h:3148
char * write_direct_flush(Size &available, Size written_size, Size reserve_size)
Flush data written directly to buffer and get pointer for appending more.
Definition: iobase.h:325
Simple raw memory buffer.
Definition: rawbuffer.h:34
Holds field and alignment formatting attributes.
Definition: str.h:2481
Function not supported/implemented.
Definition: sys.h:1121
T num
Number to format.
Definition: str.h:3071
char * write_direct_multi(Size &available, Size reserve_size)
Get pointer for writing directly to buffer to append data and allow multiple passes for larger sizes...
Definition: iobase.h:307
FmtSetNull null
String to use for null values from strings (like String) or primitives (like Int) ...
Definition: str.h:2887
This & operator<<(long num)
Write formatted number to stream.
Definition: iobase.h:1478
Data not quotable (invalid text)
Definition: strscan.h:1905
Explicitly format a hex dump from buffer.
Definition: str.h:3294
FmtBase
Formatting integer base.
Definition: str.h:2318
#define EVO_PARAM_UNUSED(NAME)
Mark function parameter as unused to suppress "unreferenced parameter" compiler warnings on it...
Definition: sys.h:427
bool flush()
Flush any pending output in stream write buffer, if buffered.
Definition: iobase.h:937
FmtSetFloat num_flt
Floating point attributes.
Definition: str.h:2889
This & operator<<(This &)
No-op used by formatting helpers.
Definition: iobase.h:1334
IoReader bufrd_
Buffered reader.
Definition: iobase.h:1689
Type
Quoting type.
Definition: strscan.h:1897
T::ExceptionInT ExceptionInT
Stream input exception type
Definition: iobase.h:799
Size writequoted(const char *buf, Size size, char delim, bool optional=false)
Write quoted text output to string.
Definition: iobase.h:970
ulong used
Buffer size in use in bytes.
Definition: rawbuffer.h:37