Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Reader Class Reference

Inheritance diagram for Reader:

AbstractReader EndianReader HttpReader List of all members.

Public Member Functions

 this (IBuffer buffer)
 this (IConduit conduit)
char[] toString ()
void read (void *dst, uint count)

Private Member Functions

 this (IReader reader)
IBuffer getBuffer ()
IArrayAllocator getAllocator ()
void setAllocator (IArrayAllocator memory)
void setStringDecoder (IStringDecoder s)
IReader push (uint size)
uint length ()
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 int[] x)
IReader get (inout char[] x)
IReader get (inout wchar[] x)
IReader get (inout dchar[] x)

Static Private Member Functions

 this ()

Private Attributes

IBuffer buffer
StringDecoder string
NumericDecoder numeric

Detailed Description

Reader base-class. Each reader operates upon an IBuffer, which is provided at construction time. Said buffer is intended to remain consistent over the reader lifetime.

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 integral 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 method setMapped() 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 Reader r = new Reader(buf); Writer w = new Writer(buf); int i = 10; long j = 20; double d = 3.14159; // write data types out w << i << j << d; // read them back again r >> i >> j >> d; // reset buf.clear(); // same thing again, but using get() syntax instead w.put(i).put(j).put(d); r.get(i).get(j).get(d);

Readers may also be used with any class implementing the IReadable interface. See CompositeReader for an example of how this can be put to good use.

Definition at line 88 of file Reader.d.


Member Function Documentation

this IBuffer  buffer  )  [inline]
 

Construct a reader on the provided buffer.

Reimplemented from AbstractReader.

Reimplemented in HttpReader, and EndianReader.

Definition at line 96 of file Reader.d.

this IConduit  conduit  )  [inline]
 

Construct a reader on the buffer belonging to the given conduit.

Definition at line 124 of file Reader.d.

char [] toString  )  [inline]
 

Return the name of this reader

Reimplemented from AbstractReader.

Reimplemented in EndianReader.

Definition at line 133 of file Reader.d.

void read void *  dst,
uint  count
[inline]
 

Definition at line 142 of file Reader.d.

References IBuffer::get(), IBuffer::getConduit(), and IBuffer::readable().

Referenced by EndianReader::bits16(), EndianReader::bits32(), EndianReader::bits64(), and EndianReader::bits80().

this  )  [inline, static, inherited]
 

Construct a couple of static exception instances.

Definition at line 163 of file AbstractReader.d.

References AbstractReader::eof, and AbstractReader::udf.

this IReader  reader  )  [inline, inherited]
 

Definition at line 57 of file ArrayAllocator.d.

IBuffer getBuffer  )  [inline, inherited]
 

Return the buffer associated with this reader

Reimplemented from IReader.

Definition at line 188 of file AbstractReader.d.

IArrayAllocator getAllocator  )  [inline, inherited]
 

Return the allocator associated with this reader.See ArrayAllocator for more information.

Definition at line 200 of file AbstractReader.d.

References AbstractReader::memory.

void setAllocator IArrayAllocator  memory  )  [inline, inherited]
 

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.

void setStringDecoder IStringDecoder  s  )  [inline, inherited]
 

Set the configured IStringDecoder. These are intended to be used as a conversion mechanism between various character representations. They are also expected to be used for the process of applying character encodings.

See IStringDecoder.

Reimplemented from IReader.

Definition at line 245 of file AbstractReader.d.

References IStringDecoder::char16(), AbstractReader::StringDecoder::char16, IStringDecoder::char32(), AbstractReader::StringDecoder::char32, IStringDecoder::char8(), AbstractReader::StringDecoder::char8, and AbstractReader::string.

IReader push uint  size  )  [inline, inherited]
 

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.

char[] x; int size; IReader reader; reader.push(size).get(x);

Reimplemented from IReader.

Definition at line 269 of file AbstractReader.d.

References AbstractReader::pushed.

uint length  )  [inline, inherited]
 

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 285 of file AbstractReader.d.

References AbstractReader::get(), and AbstractReader::pushed.

void wait  )  [inline, inherited]
 

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 304 of file AbstractReader.d.

References IBuffer::get().

IReader get IReadable  x  )  [inline, inherited]
 

Extract a readable class from the current read-position

Reimplemented from IReader.

Definition at line 315 of file AbstractReader.d.

References IReadable::read().

Referenced by AbstractReader::length(), AbstractReader::VersionUseShiftOperators::opShr(), testBuffer(), testConduitFilters(), testHttpClient(), and testRandomAccess().

IReader get inout bool  x  )  [inline, inherited]
 

Extract a boolean value from the current read-position

Reimplemented from IReader.

Definition at line 328 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int1, and AbstractReader::numeric.

IReader get inout ubyte  x  )  [inline, inherited]
 

Extract an unsigned byte value from the current read-position

Reimplemented from IReader.

Definition at line 340 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int8u, and AbstractReader::numeric.

IReader get inout byte  x  )  [inline, inherited]
 

Extract a byte value from the current read-position

Reimplemented from IReader.

Definition at line 352 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int8, and AbstractReader::numeric.

IReader get inout ushort  x  )  [inline, inherited]
 

Extract an unsigned short value from the current read-position

Reimplemented from IReader.

Definition at line 364 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int16u, and AbstractReader::numeric.

IReader get inout short  x  )  [inline, inherited]
 

Extract a short value from the current read-position

Reimplemented from IReader.

Definition at line 376 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int16, and AbstractReader::numeric.

IReader get inout uint  x  )  [inline, inherited]
 

Extract a unsigned int value from the current read-position

Reimplemented from IReader.

Definition at line 388 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int32u, and AbstractReader::numeric.

IReader get inout int  x  )  [inline, inherited]
 

Extract an int value from the current read-position

Reimplemented from IReader.

Definition at line 400 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int32, and AbstractReader::numeric.

IReader get inout ulong  x  )  [inline, inherited]
 

Extract an unsigned long value from the current read-position

Reimplemented from IReader.

Definition at line 412 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int64u, and AbstractReader::numeric.

IReader get inout long  x  )  [inline, inherited]
 

Extract a long value from the current read-position

Reimplemented from IReader.

Definition at line 424 of file AbstractReader.d.

References AbstractReader::NumericDecoder::int64, and AbstractReader::numeric.

IReader get inout float  x  )  [inline, inherited]
 

Extract a float value from the current read-position

Reimplemented from IReader.

Definition at line 436 of file AbstractReader.d.

References AbstractReader::NumericDecoder::float32, and AbstractReader::numeric.

IReader get inout double  x  )  [inline, inherited]
 

Extract a double value from the current read-position

Reimplemented from IReader.

Definition at line 448 of file AbstractReader.d.

References AbstractReader::NumericDecoder::float64, and AbstractReader::numeric.

IReader get inout real  x  )  [inline, inherited]
 

Extract a real value from the current read-position

Reimplemented from IReader.

Definition at line 460 of file AbstractReader.d.

References AbstractReader::NumericDecoder::float80, and AbstractReader::numeric.

IReader get inout char  x  )  [inline, inherited]
 

Extract a char value from the current read-position

Reimplemented from IReader.

Definition at line 472 of file AbstractReader.d.

References AbstractReader::StringDecoder::char8, and AbstractReader::string.

IReader get inout wchar  x  )  [inline, inherited]
 

Extract a wide char value from the current read-position

Reimplemented from IReader.

Definition at line 484 of file AbstractReader.d.

References AbstractReader::StringDecoder::char16, and AbstractReader::string.

IReader get inout dchar  x  )  [inline, inherited]
 

Extract a double char value from the current read-position

Reimplemented from IReader.

Definition at line 496 of file AbstractReader.d.

References AbstractReader::StringDecoder::char32, and AbstractReader::string.

IReader get inout int[]  x  )  [inline, inherited]
 

Definition at line 506 of file AbstractReader.d.

References IArrayAllocator::allocate(), AbstractReader::StringDecoder::char8, AbstractReader::memory, and AbstractReader::string.

IReader get inout char[]  x  )  [inline, inherited]
 

Reimplemented from IReader.

Reimplemented in TextReader.

Definition at line 516 of file AbstractReader.d.

References IArrayAllocator::allocate(), AbstractReader::StringDecoder::char8, AbstractReader::memory, and AbstractReader::string.

IReader get inout wchar[]  x  )  [inline, inherited]
 

Reimplemented from IReader.

Reimplemented in TextReader.

Definition at line 526 of file AbstractReader.d.

References IArrayAllocator::allocate(), AbstractReader::StringDecoder::char16, AbstractReader::memory, and AbstractReader::string.

IReader get inout dchar[]  x  )  [inline, inherited]
 

Reimplemented from IReader.

Reimplemented in TextReader.

Definition at line 536 of file AbstractReader.d.

References IArrayAllocator::allocate(), AbstractReader::StringDecoder::char32, AbstractReader::memory, and AbstractReader::string.


Member Data Documentation

IBuffer buffer [protected, inherited]
 

Definition at line 135 of file AbstractReader.d.

StringDecoder string [protected, inherited]
 

Definition at line 138 of file AbstractReader.d.

Referenced by AbstractReader::get(), and AbstractReader::setStringDecoder().

NumericDecoder numeric [protected, inherited]
 

Definition at line 141 of file AbstractReader.d.

Referenced by AbstractReader::get().


The documentation for this class was generated from the following file:
Generated on Sun Oct 24 22:31:30 2004 for Mango by doxygen 1.3.6