Inheritance diagram for Reader:
Public Member Functions | |
this (IBuffer buffer) | |
this (IConduit conduit) | |
final uint | read (void *dst, uint count) |
uint | read (void *dst, uint count) |
Private Types | |
typedef opShr | get |
Private Member Functions | |
IBuffer | getBuffer () |
IArrayAllocator | getAllocator () |
void | setAllocator (IArrayAllocator memory) |
void | setDecoder (IDecoder d) |
IReader | push (uint size) |
uint | length () |
void | wait () |
IReader | opShr (IReadable x) |
IReader | opShr (inout bool x) |
IReader | opShr (inout ubyte x) |
IReader | opShr (inout byte x) |
IReader | opShr (inout ushort x) |
IReader | opShr (inout short x) |
IReader | opShr (inout uint x) |
IReader | opShr (inout int x) |
IReader | opShr (inout ulong x) |
IReader | opShr (inout long x) |
IReader | opShr (inout float x) |
IReader | opShr (inout double x) |
IReader | opShr (inout real x) |
IReader | opShr (inout char x) |
IReader | opShr (inout wchar x) |
IReader | opShr (inout dchar x) |
IReader | opShr (inout ubyte[] x) |
IReader | opShr (inout byte[] x) |
IReader | opShr (inout ushort[] x) |
IReader | opShr (inout short[] x) |
IReader | opShr (inout uint[] x) |
IReader | opShr (inout int[] x) |
IReader | opShr (inout ulong[] x) |
IReader | opShr (inout long[] x) |
IReader | opShr (inout float[] x) |
IReader | opShr (inout double[] x) |
IReader | opShr (inout real[] x) |
IReader | opShr (inout char[] x) |
IReader | opShr (inout wchar[] x) |
IReader | opShr (inout dchar[] x) |
Private Attributes | |
IBuffer | buffer |
Decoder | decode |
Readers support both a C++ iostream type syntax, along with a get() syntax. Operations may be chained back-to-back.
All readers support the full set of native data types, plus a selection of array types. The latter can be configured to produce either a copy (.dup) of the buffer content, or a slice. See class SimpleAllocator, BufferAllocator and SliceAllocator for more on this topic.
The code below illustrates basic operation upon a memory buffer:
Buffer buf = new Buffer (256); // map same buffer into both reader and writer IReader r = new Reader(buf); IWriter w = new Writer(buf); int i = 10; long j = 20; double d = 3.14159; char[] c = "fred"; // write data types out w << c << i << j << d; // read them back again r >> c >> i >> j >> d; // reset buf.clear(); // same thing again, but using get() syntax instead w.put(c).put(i).put(j).put(d); r.get(c).get(i).get(j).get(d);
Readers may also be used with any class implementing the IReadable interface. See PickleReader for an example of how this can be put to good use.
Definition at line 93 of file Reader.d.
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 101 of file AbstractReader.d. Referenced by AbstractReader::length(), testBuffer(), testConduitFilters(), testHttpClient(), and testRandomAccess(). |
|
Construct a reader on the provided buffer. Reimplemented from AbstractReader. Reimplemented in HttpReader, and EndianReader. |
|
Construct a reader on the buffer belonging to the given conduit. |
|
Definition at line 138 of file Reader.d. References IBuffer::get(), and IBuffer::read(). Referenced by EndianReader::bits16(), EndianReader::bits32(), EndianReader::bits64(), and EndianReader::bits80(). |
|
Definition at line 165 of file Reader.d. References IBuffer::get(), and IBuffer::readable(). |
|
Return the buffer associated with this reader Reimplemented from IReader. Definition at line 162 of file AbstractReader.d. |
|
Return the allocator associated with this reader.See ArrayAllocator for more information. Reimplemented from IReader. Definition at line 174 of file AbstractReader.d. References AbstractReader::memory. |
|
Set the allocator to use for array management. Arrays are always allocated by the IReader. That is, you cannot read data into an array slice (for example). Instead, a number of IArrayAllocator classes are available to manage memory allocation when reading array content. By default, an IReader will allocate each array from the heap. You can change that behavior by calling this method with an IArrayAllocator of choice. For instance, there is a BufferAllocator which will slice an array directly from the buffer where possible. Also available is the record-oriented SliceAllocator, which slices memory from within a pre-allocated heap area, and should be reset by the client code after each record has been read (to avoid unnecessary growth). See ArrayAllocator for more information. Reimplemented from IReader. Definition at line 201 of file AbstractReader.d. References IArrayAllocator::bind(). Referenced by AbstractReader::this(). |
|
Bind an IDecoder to the writer. Decoders are intended to be used as a conversion mechanism between various character representations (encodings), or the translation of any data type from one representation to another. Each data type may be configured with a distinct decoder, covering all native types (15 in total). An appropriate decoder set should be attached to each IReader, and thus be available for subsequent use. A raw binary implementation is attached by default (no encoding). See module mango.icu.UMango for an example of decoder implementation -- those classes bind the ICU converters to this IO package. Reimplemented from IReader. Definition at line 226 of file AbstractReader.d. References IDecoder::bind(), AbstractReader::decode, AbstractReader::Decoder::decoders, and IDecoder::type(). |
|
Push the size (in bytes) to use for the next array-read. By default, array sizes are read from the input stream, so this is the means by which one may specify the size where the stream is not formatted in such a manner.
Reimplemented from IReader. Definition at line 248 of file AbstractReader.d. References AbstractReader::pushed. |
|
Read and return an integer from the input stream. This can be used to extract the length of a subsequent array. Reimplemented from IReader. Definition at line 264 of file AbstractReader.d. References AbstractReader::get, and AbstractReader::pushed. Referenced by AbstractReader::opShr(). |
|
Wait for something to arrive in the buffer. This may stall the current thread forever, although usage of SocketConduit will take advantage of the timeout facilities provided there. Reimplemented from IReader. Definition at line 283 of file AbstractReader.d. References IBuffer::get(). |
|
Extract a readable class from the current read-position Reimplemented from IReader. Definition at line 294 of file AbstractReader.d. References IReadable::read(). |
|
Extract a boolean value from the current read-position Reimplemented from IReader. Definition at line 307 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int1. |
|
Extract an unsigned byte value from the current read-position Reimplemented from IReader. Definition at line 319 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int8u. |
|
Extract a byte value from the current read-position Reimplemented from IReader. Definition at line 331 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int8. |
|
Extract an unsigned short value from the current read-position Reimplemented from IReader. Definition at line 343 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int16u. |
|
Extract a short value from the current read-position Reimplemented from IReader. Definition at line 356 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int16. |
|
Extract a unsigned int value from the current read-position Reimplemented from IReader. Definition at line 368 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int32u. |
|
Extract an int value from the current read-position Reimplemented from IReader. Definition at line 380 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int32. |
|
Extract an unsigned long value from the current read-position Reimplemented from IReader. Definition at line 392 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int64u. |
|
Extract a long value from the current read-position Reimplemented from IReader. Definition at line 404 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::int64. |
|
Extract a float value from the current read-position Reimplemented from IReader. Definition at line 416 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::float32. |
|
Extract a double value from the current read-position Reimplemented from IReader. Definition at line 428 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::float64. |
|
Extract a real value from the current read-position Reimplemented from IReader. Definition at line 440 of file AbstractReader.d. References AbstractReader::decode, and AbstractReader::Decoder::float80. |
|
Extract a char value from the current read-position Reimplemented from IReader. Definition at line 452 of file AbstractReader.d. References AbstractReader::Decoder::char8, and AbstractReader::decode. |
|
Extract a wide char value from the current read-position Reimplemented from IReader. Definition at line 464 of file AbstractReader.d. References AbstractReader::Decoder::char16, and AbstractReader::decode. |
|
Extract a double char value from the current read-position Reimplemented from IReader. Definition at line 476 of file AbstractReader.d. References AbstractReader::Decoder::char32, and AbstractReader::decode. |
|
Extract an unsigned byte value from the current read-position Reimplemented from IReader. Definition at line 488 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int8u, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a byte value from the current read-position Reimplemented from IReader. Definition at line 500 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int8, AbstractReader::length(), and AbstractReader::memory. |
|
Extract an unsigned short value from the current read-position Reimplemented from IReader. Definition at line 512 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int16u, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a short value from the current read-position Reimplemented from IReader. Definition at line 524 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int16, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a unsigned int value from the current read-position Reimplemented from IReader. Definition at line 536 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int32u, AbstractReader::length(), and AbstractReader::memory. |
|
Extract an int value from the current read-position Reimplemented from IReader. Definition at line 548 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int32, AbstractReader::length(), and AbstractReader::memory. |
|
Extract an unsigned long value from the current read-position Reimplemented from IReader. Definition at line 560 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int64u, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a long value from the current read-position Reimplemented from IReader. Definition at line 572 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::int64, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a float value from the current read-position Reimplemented from IReader. Definition at line 584 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::float32, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a double value from the current read-position Reimplemented from IReader. Definition at line 596 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::float64, AbstractReader::length(), and AbstractReader::memory. |
|
Extract a real value from the current read-position Reimplemented from IReader. Definition at line 608 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::decode, AbstractReader::Decoder::float80, AbstractReader::length(), and AbstractReader::memory. |
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 618 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::Decoder::char8, AbstractReader::decode, AbstractReader::length(), and AbstractReader::memory. |
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 628 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::Decoder::char16, AbstractReader::decode, AbstractReader::length(), and AbstractReader::memory. |
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 638 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::Decoder::char32, AbstractReader::decode, AbstractReader::length(), and AbstractReader::memory. |
|
Definition at line 133 of file AbstractReader.d. |
|
Definition at line 136 of file AbstractReader.d. Referenced by AbstractReader::opShr(), and AbstractReader::setDecoder(). |