stream_helper
stream_helper is a helper object that grants the mwx::stream
interface. It creates a helper object that references a data class and performs data input/output via the helper object.
The following creates a helper object bs
from an array b
of smplbufs and inputs data using the mwx::stream::operator <<()
operator.
smplbuf_u8<32> b;
auto&& bs = b.get_stream_helper(); // helper object
// Data String Generation
uint8_t FOURCHARS[]={'A', 'B', 'C', 'D'};
bs << FOURCHARS;
bs << ';';
bs << uint32_t(0x30313233); // "0123"
bs << format(";%d", 99);
Serial << b << crlf; // Output to Serial via smplbuf_u8<32> class
//result: ABCD;0123;99
Overview
stream_helper behaves as if the data array were a stream.
Internally, it holds read/write positions in the data array. It behaves as follows.
After the last data is read or written, it moves to the next read/write position.
After the last data is read or data is appended to the end, the read/write position becomes the end.
If the read/write position is the end of the line, then
available()
becomesfalse
.Read cannot be performed.
Writing is appended if it is within the writable range.
generating stream_helper
stream_helper is a data class (smplbuf, EEPROM) member functions.
auto&& obj_helper = obj.get_stream_helper()
// obj is an object of data class, obj_helper type is accepted by auto&& because it is long.
methods
rewind()
void rewind()
Moves the read/write position to the beginning.
seek()
int seek(int offset, int whence = MWX_SEEK_SET)
Set the read/write position.
MWX_SEEK_SET
set from the leading position. If offset
is 0
, it means the same as rewind()
.
MWX_SEEK_CUR
Move by offset
with respect to the current position.
MWX_SEEK_END
end position. Setting offset
to 0
sets the end position. If -1
is set, it moves to the last character.
tell()
int tell()
Returns the read/write position. Returns -1
for the end position.
available()
int available()
Returns 0
if the read/write position is the end. If it is not the end, it returns any other value.
最終更新