Inheritance diagram for AbstractReader:
Public Types | |
typedef get | opShr |
typedef get | opCall |
Public Member Functions | |
this (IBuffer buffer) | |
IBuffer | getBuffer () |
IArrayAllocator | getAllocator () |
void | setAllocator (IArrayAllocator memory) |
void | setDecoder (IDecoder d) |
void | wait () |
IReader | get (IReadable x) |
IReader | get (inout bool x) |
IReader | get (inout ubyte x) |
IReader | get (inout byte x) |
IReader | get (inout ushort x) |
IReader | get (inout short x) |
IReader | get (inout uint x) |
IReader | get (inout int x) |
IReader | get (inout ulong x) |
IReader | get (inout long x) |
IReader | get (inout float x) |
IReader | get (inout double x) |
IReader | get (inout real x) |
IReader | get (inout char x) |
IReader | get (inout wchar x) |
IReader | get (inout dchar x) |
IReader | get (inout ubyte[] x, uint elements=uint.max) |
IReader | get (inout byte[] x, uint elements=uint.max) |
IReader | get (inout ushort[] x, uint elements=uint.max) |
IReader | get (inout short[] x, uint elements=uint.max) |
IReader | get (inout uint[] x, uint elements=uint.max) |
IReader | get (inout int[] x, uint elements=uint.max) |
IReader | get (inout ulong[] x, uint elements=uint.max) |
IReader | get (inout long[] x, uint elements=uint.max) |
IReader | get (inout float[] x, uint elements=uint.max) |
IReader | get (inout double[] x, uint elements=uint.max) |
IReader | get (inout real[] x, uint elements=uint.max) |
IReader | get (inout char[] x, uint elements=uint.max) |
IReader | get (inout wchar[] x, uint elements=uint.max) |
IReader | get (inout dchar[] x, uint elements=uint.max) |
Protected Attributes | |
IBuffer | buffer |
Decoder | decode |
Private Member Functions | |
final uint | count (uint elements) |
void | reset () |
void | bind (IReader reader) |
bool | isMutable (void *x) |
void | allocate (void[]*x, uint count, uint width, BufferDecoder decoder) |
Private Attributes | |
IArrayAllocator | memory |
All readers support the full set of native data types, plus a full 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.
Readers support a C++ iostream type syntax, along with Java-esque get() notation. However, the Mango style is to place IO elements within their own parenthesis, like so:
int count; char[] verse;
read () (count);
Note that each element is distict; this enables "strong typing", which should catch any typo errors at compile-time.
The code below illustrates basic operation upon a memory buffer:
Buffer buf = new Buffer (256); // map same buffer into both reader and writer IReader read = new Reader (buf); IWriter write = new Writer (buf); int i = 10; long j = 20; double d = 3.14159; char[] c = "fred"; // write data types out write (c) (i) (j) (d); // read them back again read (c) (i) (j) (d); // reset buf.clear(); // same thing again, but using iostream syntax instead write << c << i << j << d; // read them back again read >> c >> i >> j >> d; // reset buf.clear(); // same thing again, but using put() syntax instead write.put(c).put(i).put(j).put(d); read.get(c).get(i).get(j).get(d);
Note that certain Readers, such as the basic binary implementation, expect to retrieve the number of array elements from the source. For example; when reading an array from a file, the number of elements is read from the file also. If the content is not arranged in such a manner, you may specify how many elements to read via a second argument:
read (myArray, 11);
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 127 of file AbstractReader.d.
|
Reimplemented from IReader. Definition at line 129 of file AbstractReader.d. |
|
Reimplemented from IReader. Definition at line 130 of file AbstractReader.d. |
|
Return the buffer associated with this reader Reimplemented in HttpReader, EndianReader, and Reader. Definition at line 176 of file AbstractReader.d. References setAllocator(). |
|
Return the buffer associated with this reader Reimplemented from IReader. Definition at line 188 of file AbstractReader.d. |
|
Return the allocator associated with this reader.See ArrayAllocator for more information. Reimplemented from IReader. Definition at line 200 of file AbstractReader.d. References 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 227 of file AbstractReader.d. References IArrayAllocator::bind(). Referenced by 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 252 of file AbstractReader.d. References IDecoder::bind(), decode, AbstractReader::Decoder::decoders, and IDecoder::type(). |
|
Read and return an integer from the input stream. This is used to extract the element count of a subsequent array. Definition at line 264 of file AbstractReader.d. References get(). Referenced by get(). |
|
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 279 of file AbstractReader.d. References IBuffer::get(). |
|
Extract a readable class from the current read-position Reimplemented from IReader. Definition at line 290 of file AbstractReader.d. References assert(), and IReadable::read(). Referenced by count(). |
|
Extract a boolean value from the current read-position Reimplemented from IReader. Definition at line 303 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int1. |
|
Extract an unsigned byte value from the current read-position Reimplemented from IReader. Definition at line 315 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int8u. |
|
Extract a byte value from the current read-position Reimplemented from IReader. Definition at line 327 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int8. |
|
Extract an unsigned short value from the current read-position Reimplemented from IReader. Definition at line 339 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int16u. |
|
Extract a short value from the current read-position Reimplemented from IReader. Definition at line 351 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int16. |
|
Extract a unsigned int value from the current read-position Reimplemented from IReader. Definition at line 363 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int32u. |
|
Extract an int value from the current read-position Reimplemented from IReader. Definition at line 375 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int32. |
|
Extract an unsigned long value from the current read-position Reimplemented from IReader. Definition at line 387 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int64u. |
|
Extract a long value from the current read-position Reimplemented from IReader. Definition at line 399 of file AbstractReader.d. References decode, and AbstractReader::Decoder::int64. |
|
Extract a float value from the current read-position Reimplemented from IReader. Definition at line 411 of file AbstractReader.d. References decode, and AbstractReader::Decoder::float32. |
|
Extract a double value from the current read-position Reimplemented from IReader. Definition at line 423 of file AbstractReader.d. References decode, and AbstractReader::Decoder::float64. |
|
Extract a real value from the current read-position Reimplemented from IReader. Definition at line 435 of file AbstractReader.d. References decode, and AbstractReader::Decoder::float80. |
|
Extract a char value from the current read-position Reimplemented from IReader. Definition at line 447 of file AbstractReader.d. References AbstractReader::Decoder::char8, and decode. |
|
Extract a wide char value from the current read-position Reimplemented from IReader. Definition at line 459 of file AbstractReader.d. References AbstractReader::Decoder::char16, and decode. |
|
Extract a double char value from the current read-position Reimplemented from IReader. Definition at line 471 of file AbstractReader.d. References AbstractReader::Decoder::char32, and decode. |
|
Extract an unsigned byte value from the current read-position Reimplemented from IReader. Definition at line 483 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int8u, and memory. |
|
Extract a byte value from the current read-position Reimplemented from IReader. Definition at line 495 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int8, and memory. |
|
Extract an unsigned short value from the current read-position Reimplemented from IReader. Definition at line 507 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int16u, and memory. |
|
Extract a short value from the current read-position Reimplemented from IReader. Definition at line 519 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int16, and memory. |
|
Extract a unsigned int value from the current read-position Reimplemented from IReader. Definition at line 531 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int32u, and memory. |
|
Extract an int value from the current read-position Reimplemented from IReader. Definition at line 543 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int32, and memory. |
|
Extract an unsigned long value from the current read-position Reimplemented from IReader. Definition at line 555 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int64u, and memory. |
|
Extract a long value from the current read-position Reimplemented from IReader. Definition at line 567 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::int64, and memory. |
|
Extract a float value from the current read-position Reimplemented from IReader. Definition at line 579 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::float32, and memory. |
|
Extract a double value from the current read-position Reimplemented from IReader. Definition at line 591 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::float64, and memory. |
|
Extract a real value from the current read-position Reimplemented from IReader. Definition at line 603 of file AbstractReader.d. References IArrayAllocator::allocate(), count(), decode, AbstractReader::Decoder::float80, and memory. |
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 613 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::Decoder::char8, count(), decode, and memory. |
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 623 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::Decoder::char16, count(), decode, and memory. |
|
Reimplemented from IReader. Reimplemented in TextReader. Definition at line 633 of file AbstractReader.d. References IArrayAllocator::allocate(), AbstractReader::Decoder::char32, count(), decode, and memory. |
|
Reimplemented from IArrayAllocator. Reimplemented in BufferAllocator. Definition at line 60 of file ArrayAllocator.d. |
|
Reimplemented from IArrayAllocator. Reimplemented in BufferAllocator. Definition at line 68 of file ArrayAllocator.d. |
|
Reimplemented from IArrayAllocator. Reimplemented in NativeAllocator, and BufferAllocator. Definition at line 77 of file ArrayAllocator.d. |
|
Reimplemented from IArrayAllocator. Reimplemented in NativeAllocator, and BufferAllocator. Definition at line 86 of file ArrayAllocator.d. References BufferDecoder. |
|
Definition at line 162 of file AbstractReader.d. |
|
Definition at line 165 of file AbstractReader.d. Referenced by get(), and setDecoder(). |
|
Definition at line 168 of file AbstractReader.d. Referenced by get(), and getAllocator(). |