@@TJclCRC16Stream
Summary:
  The TJclCRC16Stream stores data in a protected stream.
Description:
  The TJclCRC16Stream stores data in a protected stream.

  Every block of data is followed by a checksum computed by the
  Cyclic Redundancy Check algorithm on 16 bit. This checksum is
  able to repair errors in the stream. Current implementation
  can repair one damaged bit.

  All checksum computations and checks are transparent, this
  stream can be used as any other regular Stream. Use the Flush
  method to force data to be written from the internal buffer.
See also:
  TJclCRC32Stream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC16Stream.AfterBlockRead
Summary:
  This function checks data after reading and eventually
  correct damaged bits in it.
See also:
  TJclCRC16Stream.BeforeBlockWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC16Stream.BeforeBlockWrite
Summary:
  This function computes checksum before writing data to the
  storage stream.
See also:
  TJclCRC16Stream.AfterBlockRead
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC16Stream.Create@TStream@Boolean
Summary:
  Constructor for the TJclCRC16Stream class.
Parameters:
  AStorageStream - Stream storing protected data and checksums.
                   Data in this stream are larger than original
                   ones because of checksums (2 bytes each)
                   being inserted after each predefined length
                   block.
  AOwnsStream    - If set, the stream will be freed when this
                   instance of TJclCRC16Stream will be
                   destroyed.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC32Stream
Summary:
  The TJclCRC32Stream stores data in a protected stream.
Description:
  The TJclCRC32Stream stores data in a protected stream.

  Every block of data is followed by a checksum computed by the
  Cyclic Redundancy Check algorithm on 32 bits. This checksum
  is able to repair errors in the stream. Current
  implementation can repair one damaged bit.

  All checksum computations and checks are transparent, this
  stream can be used as any other regular Stream. Use the Flush
  method to force data to be written from the internal buffer.
See also:
  TJclCRC16Stream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC32Stream.AfterBlockRead
Summary:
  This function checks data after reading and eventually
  correct damaged bits in it.
See also:
  TJclCRC32Stream.BeforeBlockWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC32Stream.BeforeBlockWrite
Summary:
  This function computes checksum before writing data to the
  storage stream.
See also:
  TJclCRC16Stream.AfterBlockRead
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclCRC32Stream.Create@TStream@Boolean
Summary:
  Constructor for the TJclCRC32Stream class.
Parameters:
  AStorageStream - Stream storing protected data and checksums.
                   Data in this stream are larger than original
                   ones because of checksums (4 bytes each)
                   being inserted after each predefined length
                   block.
  AOwnsStream    - If set, the stream will be freed when this
                   instance of TJclCRC32Stream will be
                   destroyed.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream
Summary:
  TJclSectoredStream organizes data and forces read and write
  operations to storage stream to have a fixed size.
Description:
  TJclSectoredStream organizes data and forces read and write
  operations to storage stream to have a fixed size. Every
  smaller accesses are stored into a buffer which is flushed
  when full.

  Fixed size blocks are called "sector", each sector can
  contain a predefined number of bytes reserved to store a
  checksum or any other data (TJclCRC16Stream and
  TJclCRC32Stream classes use this feature). In order to set
  these bytes, this class has to be inherited and virtual
  methods TJclSectoredStream.BeforeBlockRead and
  TJclSectoredStream.AfterBlockWrite have to be overridden.
See also:
  TJclBufferedStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.FSectorOverHead
Summary:
  Private field to store the number of additional bytes of each sector.
See also:
  TJclSectoredStream.Create
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.AfterBlockRead
Summary:
  TODO
Description:
  Virtual method called after a block of data is read from
  storage stream. As implemented in this class, this function
  does nothing. In order to check checksums and/or decrypt
  data, a class that inherits from TJclSectoredStream has to
  override this procedure.

  When this function is called, bytes in FBuffer from 0 to
  FCurrentBufferSize+FBlockOverHead-1 were read from storage
  stream.

  After this function returns, bytes in FBuffer from 0 to
  FCurrentBufferSize-1 will contain data as passed to the
  caller or TStream.Read.
See also:
  TJclSectoredStream.BeforeBlockWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.BeforeBlockWrite
Summary:
  TODO
Description:
  Virtual method called before a block of data is written to
  storage stream. As implemented in this class, this function
  does nothing. In order to compute checksums and/or crypt
  data, a class that inherits from TJclSectoredStream has to
  override this procedure.

  When this function is called, bytes in FBuffer from 0 to
  FCurrentBufferSize-1 were written by calls to TStream.Write.

  When this function returns, bytes in FBuffer from 0 to
  FCurrentBufferSize+FBlockOverhead-1 will be written to
  storage stream.
See also:
  TJclSectoredStream.AfterBlockRead
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.Create@TStream@Boolean@Longint
Summary:
  Constructor of the TJclSectoredStream class.
Parameters:
  AStorageStream  - Stream used to store data. They may be
                    larger than raw data because of OverHead
                    that can be specified for each sector.
  AOwnsStream     - If set, this stream will be destroyed when
                    this instance is destroyed.
  ASectorOverHead - Number of bytes to be added to each sector
                    of the stream.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.DoAfterStreamChange
Summary:
  Overriden method of TJclStreamDecorator.DoAfterStreamChange
  to flush and invalidate current buffer.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.FlatToSectored@Int64
Summary:
  This function translates position from flat space to sectored
  space removing overhead for each sectors before this position.
Parameters:
  Position - Position in flat space (ie in this stream space).
Result:
  Returns the position in sectored space (ie storage space).
See also:
  TJclSectoredStream.SectoredToFlat
  TJclSectoredStream.GetCalcedSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.Flush
Summary:
  TODO
Description:
  By calling this function, modified data (if any) contained in
  current buffer are written to storage stream. Note that this
  method is automatically called when current sector is
  changed.

  In order to force data to be written, you may call this
  function.
See also:
  TJclSectoredStream.LoadBuffer
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.GetCalcedSize
Summary:
  This protected function computes the real size of data
  eliminating all sector overheads of storage stream.
Result:
  Returns the computed size.
See also:
  TJclSectoredStream.FlatToSectored
  TJclSectoredStream.SectoredToFlat
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.LoadBuffer
Summary:
  This protected function loads a sector from storage stream
  when needed. If some data were modified in previous sector,
  they are automatically written to storage stream.
Result:
  Returns true if any data were read.
See also:
  TJclSectoredStream.Flush
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclSectoredStream.SectoredToFlat@Int64
Summary:
  This function translates position from sectored space to flat
  space adding overhead for each sectors before this position.
Parameters:
  Position - Position in sectored space (ie storage space).
Result:
  Returns the position in flat space (ie in space exposed by this descendant of TStream).
See also:
  TJclSectoredStream.FlatToSectored
  TJclSectoredStream.GetCalcedSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream
Summary:
  This descendant of TStream translates all calls to SetSize,
  Seek, Read and Write methods to event handlers.
See also:
  TJclEventStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.FOnRead
Summary:
  Private field to store OnRead handler.
See also:
  TJclDelegatedStream.OnSeek
  TJclDelegatedStream.OnSize
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.FOnSeek
Summary:
  Private field to store OnSeek handler.
See also:
  TJclDelegatedStream.OnRead
  TJclDelegatedStream.OnSize
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.FOnSize
Summary:
  Private field to store OnSize handler.
See also:
  TJclDelegatedStream.OnRead
  TJclDelegatedStream.OnSeek
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.FOnWrite
Summary:
  Private field to store OnWrite handler.
See also:
  TJclDelegatedStream.OnRead
  TJclDelegatedStream.OnSeek
  TJclDelegatedStream.OnSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.OnRead
<COMBINE TJclStreamReadEvent>
Summary:
  Event handler called when the Read method is called.
See also:
  TJclDelegatedStream.OnSeek
  TJclDelegatedStream.OnSize
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.OnSeek
<COMBINE TJclStreamSeekEvent>
Summary:
  Event handler called when the Seek method is called.
See also:
  TJclDelegatedStream.OnRead
  TJclDelegatedStream.OnSize
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.OnSize
<COMBINE TJclStreamSizeEvent>
Summary:
  Event handler called when the SetSize method is called (on
  write of the Size property).
See also:
  TJclDelegatedStream.OnRead
  TJclDelegatedStream.OnSeek
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.OnWrite
<COMBINE TJclStreamWriteEvent>
Summary:
  Event handler called when the Write method is called.
See also:
  TJclDelegatedStream.OnRead
  TJclDelegatedStream.OnSeek
  TJclDelegatedStream.OnSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.Read@@Longint
Summary:
  Overriden of TStream.Read, all calls to this methods are
  redirected to the OnRead event.
See also:
  TJclDelegatedStream.OnRead
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.Seek@Int64@TSeekOrigin
Summary:
  Overriden of TStream.Seek, all calls to this methods are
  redirected to the OnSeek event.
See also:
  TJclDelegatedStream.OnSeek
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.SetSize@Int64
Summary:
  Overriden of TStream.SetSize, all calls to this methods are
  redirected to the OnSize event.
See also:
  TJclDelegatedStream.OnSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclDelegatedStream.Write@@Longint
Summary:
  Overriden of TStream.Write, all calls to this methods are
  redirected to the OnWrite event.
See also:
  TJclDelegatedStream.OnWrite
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStreamReadEvent
Summary:
  TODO
Parameters:
  Sender - Object that triggers the event.
  Buffer - Buffer to store read data.
  Count - Number of byte to read.
Result:
  Returns the number of bytes that were effectively read.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStreamSeekEvent
Summary:
  TODO
Parameters:
  Sender - Object that triggers the event.
  Offset - Number of bytes to seek from specified origin.
  Count - Origin (valid values are soBeginning, soCurrent or soEnd).
Result:
  Returns the new position from the beginning of the stream.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStreamSizeEvent
Summary:
  TODO
Parameters:
  Sender - Object that triggers the event.
  NewSize - Requested new size.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStreamWriteEvent
Summary:
  TODO
Parameters:
  Sender - Object that triggers the event.
  Buffer - Buffer that contains data to be written.
  Count - Number of byte to write.
Result:
  Returns the number of bytes that were effectively written.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream
Summary:
  A subset of an existing stream.
Description:
  TJclScopedStream is a virtual stream implementing a position
  translation of the data stream. On creation, the current
  position in source stream is translated to Position=0, next
  bytes from source stream will follow. A restriction in range
  of bytes to be read/written is available too (see
  TJclScopedStream.MaxSize).
See also:
  TJclScopedStream.MaxSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.FCurrentPos
Description:
  Private field to store position in this stream referential.
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.FMaxSize
Description:
  Private field to store maximum position available (if any).
See also:
  TJclScopedStream.MaxSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.FParentStream
Description:
  Private field to store a reference to the stream containing
  the data.
See also:
  TJclScopedStream.ParentStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.FStartPos
Description:
  Private field to store the original position of ParentStream
  on creation of this object.
See also:
  TJclScopedStream.StartPos
  TJclScopedStream.ParentStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.MaxSize
Summary:
  Data size limitation.
Description:
  This property exposes the maximum size for this virtual stream.

  If set (\<\> 0), only bytes between StartPos and
  StartPos+MaxSize-1 will be available in data stream.

  If not set (=0), every bytes following position StartPos will
  be available in data stream.
See also:
  TJclScopedStream.ParentStream
  TJclScopedStream.StartPos
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.ParentStream
Summary:
  Data stream providing data.
Description:
  This property exposes the stream providing and storing data
  for this virtual stream.
See also:
  TJclScopedStream.StartPos
  TJclScopedStream.MaxSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.StartPos
Summary:
  Origin of the translation in position.
Description:
  This property exposes the initial position of the data stream
  when this virtual stream was created.
See also:
  TJclScopedStream.ParentStream
  TJclScopedStream.MaxSize
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.Create@TStream@Int64
Summary:
  Constructor of the TJclScopedStream class.
Description:
  Constructor of the TJclScopedStream class. On creation, the
  current position of ParentStream is stored in StartPos
  property.
Parameters:
  AParentStream - Data stream storing data that can be
                  read/written by this virtual stream.
  AMaxSize      - Maximum size of this virtual stream (set 0
                  not to limit).
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.Read@@Longint
Summary:
  TODO
Description:
  Overridden method of TStream.Read, all calls to this methods
  are redirected to the ParentStream.Read.
See also:
  TJclScopedStream.Seek
  TJclScopedStream.Write
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.Seek@Int64@TSeekOrigin
Summary:
  TODO
Description:
  Overridden method of TStream.Seek, all calls to this methods
  are redirected to the ParentStream.Seek.
See also:
  TJclScopedStream.Read
  TJclScopedStream.Write
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclScopedStream.Write@@Longint
Summary:
  TODO
Description:
  Overridden method of TStream.Write, all calls to this methods
  are redirected to the ParentStream.Write.
See also:
  TJclScopedStream.Read
  TJclScopedStream.Seek
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclEasyStream
Summary:
  TODO
Description:
  The TJclEasyStream class helps read and write operations of
  common data types to stream.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.IsEqual@TStream
Summary:
  TODO
Description:
  The IsEqual method compares data of this instance to data of
  reference stream for difference. Result is set accordingly.
Parameters:
  Stream - Reference stream for comparisons.
Result:
  Returns true if streams are equal, false otherwise.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadBoolean
Description:
  The ReadBoolean method reads a boolean value from this stream (1 byte length).
Result:
  Boolean value.
See also:
  TJclEasyStream.WriteBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadChar
Description:
  The ReadChar method reads a character value from this stream (1 byte length).
See also:
  TJclEasyStream.WriteChar
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  Character value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadCString
Description:
  The ReadCString method reads a C-like string (null terminated) from this stream.
See also:
  TJclEasyStream.WriteCString
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  String value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadCurrency
Description:
  The ReadCurrency method reads a currency value from this stream (8 bytes length).
See also:
  TJclEasyStream.WriteCurrency
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  Currency value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadDateTime
Description:
  The ReadDateTime method reads a TDateTime value from this stream (8 bytes length).
See also:
  TJclEasyStream.WriteDateTime
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  TDateTime value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadDouble
Description:
  The ReadDouble method reads a double precision floating point
  value from this stream (8 bytes length).
See also:
  TJclEasyStream.WriteDouble
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  Double precision floating point value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadExtended
Description:
  The ReadExtended method reads an extended precision floating
  point value from this stream (10 bytes length).
Result:
  Extended precision floating point value.
See also:
  TJclEasyStream.WriteExtended
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadInt64
Description:
  The ReadInt64 method reads a 64-bit integer value from this stream (8 bytes length).
See also:
  TJclEasyStream.WriteInt64
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  64 bit integer value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadInteger
Description:
  The ReadInteger method reads a 32 bit integer value from this stream (4 bytes length).
See also:
  TJclEasyStream.WriteInteger
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  32 bit integer value.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadShortString
Description:
  The ReadShortString method reads a short string value from this stream
  (max 255 characters).
See also:
  TJclEasyStream.WriteShortString
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadSingle
  TJclEasyStream.ReadSizedString
Result:
  Short string value
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadSingle
Description:
  The ReadSingle method reads a single precision floating point
  value from this stream (4 bytes length).
Result:
  Single precision floating point value.
See also:
  TJclEasyStream.WriteSingle
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSizedString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.ReadSizedString
Description:
  The ReadSizedString method reads a prefixed length string
  value from this stream (max 2G characters).
Result:
  String value.
See also:
  TJclEasyStream.WriteSizedString
  TJclEasyStream.ReadBoolean
  TJclEasyStream.ReadChar
  TJclEasyStream.ReadCString
  TJclEasyStream.ReadCurrency
  TJclEasyStream.ReadDateTime
  TJclEasyStream.ReadDouble
  TJclEasyStream.ReadExtended
  TJclEasyStream.ReadInt64
  TJclEasyStream.ReadInteger
  TJclEasyStream.ReadShortString
  TJclEasyStream.ReadSingle
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteBoolean@Boolean
Description:
  The WriteBoolean method writes a boolean value to this stream
  (1 byte length).
Parameters:
  Value - Boolean value.
See also:
  TJclEasyStream.ReadBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteChar@Char
Description:
  The WriteChar method writes a character value to this stream
  (1 byte length).
Parameters:
  Value - Character value.
See also:
  TJclEasyStream.ReadChar
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteCString@string
Description:
  The WriteCString method writes a C-like string (null-terminated)
  to this stream.
Parameters:
  Value - String value.
See also:
  TJclEasyStream.ReadCString
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteCurrency@Currency
Description:
  The WriteCurrency method writes a currency value to this
  stream (8 bytes length).
Parameters:
  Value - Currency value.
See also:
  TJclEasyStream.ReadCurrency
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteDateTime@TDateTime
Description:
  The WriteDateTime method writes a TDateTime value to this
  stream (8 bytes length).
Parameters:
  Value - TDateTime value.
See also:
  TJclEasyStream.ReadDateTime
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteDouble@Double
Description:
  The WriteDouble method writes a double precision floating
  point value to this stream (8 bytes length).
Parameters:
  Value - Double precision floating point value.
See also:
  TJclEasyStream.ReadDouble
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteExtended@Extended
Description:
  The WriteExtended method writes an extended precision
  floating point value to this stream (10 bytes length).
Parameters:
  Value - Extended precision floating point value.
See also:
  TJclEasyStream.ReadExtended
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteInt64@Int64
Description:
  The WriteInt64 method writes a 64 bit integer value to this
  stream (8 bytes length).
Parameters:
  Value - 64 bit integer value.
See also:
  TJclEasyStream.ReadInt64
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteInteger@Integer
Description:
  The WriteInteger method writes a 32 bit integer value to this
  stream (4 bytes length).
Parameters:
  Value - 32 bit integer value.
See also:
  TJclEasyStream.ReadInteger
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteShortString@ShortString
Description:
  The WriteShortString method writes a short string value to
  this stream (max 255 characters).
Parameters:
  Value - Short string value.
See also:
  TJclEasyStream.ReadShortString
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteSingle@Single
Description:
  The WriteSingle method writes a single precision floating
  point value to this stream (4 bytes length).
Parameters:
  Value - Single precision floating point value.
See also:
  TJclEasyStream.ReadSingle
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSizedString
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteSizedString@string
Description:
  The WriteSizedString method writes a prefixed length string
  value to this stream (max 2G characters).
Parameters
  Value - String value.
See also:
  TJclEasyStream.ReadSizedString
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteCString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEasyStream.WriteCString@string
Description:
  The WriteCString method writes a C-like string
  value to this stream (max 2G characters).
Parameters:
  Value - String value.
Notes:
  This method is superseded by the WriteCString method, which was added to
  provide symmetry to the ReadCString method.
See also:
  TJclEasyStream.ReadCString
  TJclEasyStream.WriteBoolean
  TJclEasyStream.WriteChar
  TJclEasyStream.WriteCurrency
  TJclEasyStream.WriteDateTime
  TJclEasyStream.WriteDouble
  TJclEasyStream.WriteExtended
  TJclEasyStream.WriteInt64
  TJclEasyStream.WriteInteger
  TJclEasyStream.WriteShortString
  TJclEasyStream.WriteSingle
  TJclEasyStream.WriteSizedString
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream
Summary:
  Stream with notification of progression.
Description:
  The TJclEventStream class triggers an event every time a
  change is made to the stream. This class is adapted to update
  progression bars. The event parameters contain current
  position and size of the stream.

  All operations use data from stream passed as a parameter to
  the constructor.
See also:
  TJclDelegatedStream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.FNotification
Description:
  Private field to store event handler.
See also:
  TJclEventStream.OnNotification
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.OnNotification
Summary:
  Notification event.
Description:
  The OnNotification event is fired on every operations on the
  stream (read/write/seek).
See also:
  TJclEventStream.Read
  TJclEventStream.Seek
  TJclEventStream.SetSize
  TJclEventStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TStreamNotifyEvent
Summary:
  TODO
Parameters:
  Sender - The instance that fired the event.
  Position - Position of the stream after latest operation.
  Size - Size of the stream after latest operation.
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.Create@TStream@TStreamNotifyEvent@Boolean
Summary:
  Constructor of the TJclEventStream class.
Description:
  Create a new instance of the TJclEventStream class.
Parameters:
  AStream       - Stream where data are written/read.
  ANotification - Notification handler.
  AOwnsStream   - if set, current stream is destroyed when this
                  instance is destroyed.
See also:
  TJclEventStream.OnNotification
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.DoAfterStreamChange
Description:
  Overridden method to notify that data stream is changed. This
  method sends new position and size.
See also:
  TJclEventStream.DoBeforeStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.DoBeforeStreamChange
Description:
  Overridden method to notify that data stream is about to
  change. This method sends old position and size.
See also:
  TJclEventStream.DoAfterStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.DoNotification
Description:
  Internal help to trigger the OnNotification event.
See also:
  TJclEventStream.OnNotification
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.Read@@Longint
Description:
  Overridden method of TStream.Read, all calls to this methods
  are redirected to data stream and notified to event handler.
Parameters:
  Buffer - Reference to a buffer to store data.
  Count - Number of bytes to be read.
Result:
  Effective number of bytes that were read.
See also:
  TJclEventStream.OnNotification
  TJclEventStream.Seek
  TJclEventStream.SetSize
  TJclEventStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.Seek@Int64@TSeekOrigin
Description:
  Overridden method of TStream.Seek, all calls to this methods
  are redirected to data stream and notified to event handler.
Parameters:
  Offset - Number of bytes to seek from the origin.
  Origin - Origin to seek from (soBeginning, soCurrent, soEnd).
Result:
  New position in stream.
See also:
  TJclEventStream.OnNotification
  TJclEventStream.Read
  TJclEventStream.SetSize
  TJclEventStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.SetSize@Int64
Description
  Overridden method of TStream.SetSize, all calls to this
  methods are redirected to data stream and notified to event
  handler.
Parameters
  NewSize - Requested new size of the stream.
See Also
  TJclEventStream.OnNotification
  TJclEventStream.Read
  TJclEventStream.Seek
  TJclEventStream.Write
Donator
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclEventStream.Write@@Longint
Description:
  Overridden method of TStream.Write, all calls to this methods
  are redirected to data stream and notified to event handler.
Parameters:
  Buffer - Reference to a buffer to retrieve data.
  Count - Number of bytes to be written.
Result:
  Effective number of bytes that were written.
See also:
  TJclEventStream.OnNotification
  TJclEventStream.Read
  TJclEventStream.Seek
  TJclEventStream.SetSize
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream
Summary:
  Stream class with buffered read/write accesses.
Description:
  The TJclBufferedStream class implements a buffered access to an existing data
  stream. Multiples small read and write operations will be grouped into
  predefined size accesses (see TJclBufferedStream.BufferSize). If medium access
  of original data stream is slow (disk or network access), read and write
  operations will be globally speeded up.
See also:
  TJclBufferedStream.BufferSize
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.BufferHit
Summary:
  Test if data at current position is in buffer.
Description:
  This internal helper tests if data at current position are stored in buffer.
Returns:
  True if data is in buffer.
See also:
  TJclBufferedStream.LoadBuffer
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.BufferSize
Summary:
  Size of internal buffer in bytes.
Description:
  This property exposes the size of cache buffer in memory in bytes. Changes
  made to this property will be applied next time a buffer is loaded.
See also:
  TJclBufferedStream.FBuffer
  TJclBufferedStream.FBufferMaxModifiedPos
  TJclBufferedStream.FBufferCurrentSize
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.Create@TStream@Boolean
Summary:
  Constructor of the TJclBufferedStream class.
Description:
  This constructor creates a new instance of the TJclBufferedStream class.
  An instance is constructed based on a source stream that holds data.
Parameters:
  AStream     - Stream used to store data read and written to this instance.
  AOwnsStream - Current data stream will be freed when this instance is
                destroyed.
See also:
  TJclBufferedStream.Destroy
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.Destroy
Summary:
  Destructor of the TJclBuffered class.
Description:
  Destroy curent instance and its associated resources.
See also:
  TJclBufferedStream.Create
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.DoAfterStreamChange
Summary:
  Internal notification function.
Description:
  This function initializes stream position after source stream is changed and
  invalidates current buffer.
See also:
  TJclBufferedStream.DoBeforeStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.DoBeforeStreamChange
Summary:
  Internal notification function.
Description:
  This function flushes data in buffer before soure stream is changed.
See also:
  TJclBufferedStream.DoAfterStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.FBuffer
Summary:
  Buffer to cache data.
Description:
  Array of byte to store data to group multiple small read and write operations.
See also:
  TJclBufferedStream.BufferSize
  TJclBufferedStream.FBufferMaxModifiedPos
  TJclBufferedStream.FBufferCurrentSize
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.FBufferCurrentSize
Summary:
  Number of bytes valid in buffer.
Description:
  This field stores the number of bytes valid in buffer. This number may be
  different of BufferSize on the following situation: end of stream is reached
  or data are being appended to the end of the stream. FbufferCurrentSize is
  always less or equal to Buffersize.
See also:
  TJclBufferedStream.FBuffer
  TJclBufferedStream.BufferSize
  TJclBufferedStream.FBufferMaxModifiedPos
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.FBufferMaxModifiedPos
Summary:
  Stores the index of first non modified data in buffer.
Description:
  This field indicates the number of bytes that will be flushed in buffer.
  If equal to 0, no data were changed.
See also:
  TJclBufferedStream.Flush
  TJclBufferedStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.FBufferSize
Summary:
  Stores maximum buffer size in bytes.
Description:
  This field stores the maximum size of the buffer in bytes. Changes made to
  this field will be applied next time a buffer is loaded.
See also:
  TJclBufferedStream.BufferSize
  TJclBufferedStream.LoadBuffer
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.FBufferStart
Summary:
  Position of the buffer in source stream.
Description:
  This field stores the position of the first byte of buffer in data stream.
See also:
  TJclBufferedStream.FBuffer
  TJclBufferedStream.LoadBuffer
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.Flush
Summary:
  Flush modifications in buffer to data stream.
Description:
  By calling this function, all modifications made to bytes in buffer (by calls
  to TJclBufferedStream.Write) are written to data stream.
See also:
  TJclBufferedStream.FBufferMaxModifiedPos
  TJclBufferedStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.FPosition
Summary:
  Position of this stream.
Description:
  This field stores current position of this stream. Its value is updated on
  every accesses (Read/Write/Seek).
See also:
  TJclBufferedStream.Read
  TJclBufferedStream.Seek
  TJclBufferedStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.GetCalcedSize
Summary:
  Computes size of stream including appended bytes not flushed yet.
Description:
  This function computes the size of this stream considering data stream size
  and eventually data that will be appended to this stream on next time the
  buffer is flushed.
See also:
  TJclBufferedStream.Seek
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.LoadBuffer
Summary:
  Loads a buffer of data from attached stream.
Description:
  This function loads a buffer of data at current position in attached stream.
  It tries to read BufferSize bytes and accordingly sets FBufferCurrentSize.
Returns:
  This function returns true if any data were loaded (one byte or more).
See also:
  TJclBufferedStream.FBuffer
  TJclBufferedStream.FBufferCurrentSize
  TJclBufferedStream.BufferSize
  TJclBufferedStream.Flush
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.Read@@Longint
Summary:
  Overloaded version of TStream.Read.
Description:
  By calling this function, data are read from buffered stream. If not all data
  are cached, a new buffer is cached and so on.
Parameters:
  Buffer - Memory location to store read data.
  Count  - Requested size in bytes.
Returns:
  Effective number of bytes that were read (less or equal to Count).
See also:
  TJclBufferedStream.FBuffer
  TJclBufferedStream.LoadBuffer
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.ReadFromBuffer@@Longint@Longint
Summary:
  Read data from cache buffer.
Description:
  This function tries to read Count bytes from cache buffer. It is called in a
  loop by TJclBufferedStream.Read@@Longint to have the requested number of
  bytes.
Parameters:
  Buffer - Memory location to store loaded data.
  Count  - Number of requested bytes.
  Start  - Starting position in cache buffer.
Returns:
  Effective number of bytes that were read.
See also:
  TJclBufferedStream.WriteToBuffer
  TJclBufferedStream.Read
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.Seek@Int64@TSeekOrigin
Summary:
  Overridden function of TStream.Seek.
Description:
  This function seeks current position in stream. For a more complete
  description, refer to TStream.Seek documentation.
Parameters
  Offset - Number of byte to seek from origin.
  Origin - Origin to seek from (soBeginning, soCurrent, soEnd).
Returns:
  New position in stream from beginning.
See also:
  TJclBufferedStream.Read
  TJclBufferedStream.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.Write@@Longint
Summary:
  Overriden function of TStream.Write.
Description:
  This funtion writes data to cache buffer. If it is too small, it is flushed
  until all requested data are written. For a more complete description, refer
  to TStream.Write documentation.
Parameters:
  Buffer - Data to be written.
  Count  - Number of bytes to be written.
Returns:
  Effective number of written bytes.
See also:
  TJclBufferedStream.Read
  TJclBufferedStream.Seek
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclBufferedStream.WriteToBuffer@@Longint@Longint
Summary:
  Write data to cache buffer.
Description:
  This function tries to write Count bytes to cache buffer. It is called in a
  loop by TJclBufferedStream.Write to have the requested number of bytes.
Parameters:
  Buffer - Memory location that contains data to be written.
  Count  - Number of requested bytes.
  Start  - Starting position in cache buffer.
Returns:
  Effective number of bytes that were written.
See also:
  TJclBufferedStream.WriteToBuffer
  TJclBufferedStream.Read
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator
Summary:
  Wrapper around TStream to expose a flexible TJclStream interface.
Description:
  The TJclStreamDecorator class inherits from TJclStream which make changes
  between version 5 and 6 of Delphi transparent (changes from Longint to Int64).
  The attached stream can be changed between 2 read/write/seek operations.
See also:
  TJclStreamDecorator.Stream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.Seek@Int64@TSeekOrigin
Summary:
  Overridden function of TStream.Seek.
Description:
  By calling this function, the position is translated given the Offset and
  Origin parameters. For a more complete description, refers to TStream.Seek
  documentation.
Parameters:
  Offset - Offset to seek from origin.
  Origin - Origin to seek from (soBeginning, soCurrent, soEnd).
Returns:
  New position in stream relative to beginning. -1 in case of error.
See also:
  TJclStreamDecorator.Read
  TJclStreamDecorator.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.SetSize@Int64
Summary
  Overridden function of TStream.SetSize.
Description
  Change the size of attached stream. For a more complete
  description, refer to TStream.SetSize documentation.
Parameters
  NewSize - requested new size in bytes.
See Also
  TJclStreamDecorator.Read
  TJclStreamDecorator.Seek
  TJclStreamDecorator.Write
Donator
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.AfterStreamChange
Summary:
  Event triggered after attached stream is changed.
Description:
  Event handler attached to this property will be called after every changes
  of attached stream.
See also:
  TJclStreamDecorator.BeforeStreamChange
  TJclStreamDecorator.DoAfterStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.BeforeStreamChange
Summary:
  Event triggered before attached stream is changed.
Description:
  Event handler attached to this property will be called before every changes
  of attached stream.
See also:
  TJclStreamDecorator.AfterStreamChange
  TJclStreamDecorator.DoBeforeStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.Create@TStream@Boolean
Summary:
  Constructor of the TJclStreamDecorator class.
Description:
  This constructor creates a new instance of the TJclStreamDecorator class.
Parameters:
  AStream     - Attached stream.
  AOwnsStream - Attached stream will be freed when this instance is destroyed.
See also:
  TJclStreamDecorator.Destroy
  TJclStreamDecorator.Stream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.Destroy
Summary:
  Destroy an instance of TJclStreamDecorator.
Description:
  This overridden destructor destroys this instance and all its associated
  resources.
See also:
  TJclStreamDecorator.Create
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.DoAfterStreamChange
Summary:
  Internal notification triggered after attached stream is changed.
Description:
  This protected procedure is called just after attached stream is changed.
  It may be overridden to customize its behaviour, as presently implemented,
  it calls the TJclStreamDecorator.AfterStreamChange event.
See also:
  TJclStreamDecorator.AfterStreamChange
  TJclStreamDecorator.DoBeforeStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.DoBeforeStreamChange
Summary:
  Internal notification triggered before attached stream is changed.
Description:
  This protected procedure is called before attached stream is changed.
  It may be overridden to customize its behaviour, as presently implemented,
  it calls the TJclStreamDecorator.BeforeStreamChange event.
See also:
  TJclStreamDecorator.BeforeStreamChange
  TJclStreamDecorator.DoAfterStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.FAfterStreamChange
Summary:
  Private field storing handler of the AfterStreamChange event.
Description:
  This field stores a reference to the handler of the TJclStreamDecorator.AfterStreamChange event.
See also:
  TJclStreamDecorator.AfterStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.FBeforeStreamChange
Summary:
  Private field storing handler of the BeforeStreamChange event.
Description:
  This field stores a reference to the handler of the TJclStreamDecorator.BeforeStreamChange event.
See also:
  TJclStreamDecorator.BeforeStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.FOwnsStream
Summary:
  Private field storing value of the OwnsStream property.
Description:
  This field stores the value of the OwnsStream property.
See also:
  TJclStreamDecorator.OwnsStream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.FStream
Summary:
  Private field storing value of the Stream property.
Description:
  This field stores the value of the Stream property.
See also:
  TJclStreamDecorator.Stream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.OwnsStream
Summary:
  Indicates that this instance owns attached stream.
Description:
  If set, attached stream will be freed when a new stream is attached or when
  this instance is destroyed.
See also:
  TJclStreamDecorator.Stream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.Read@@Longint
Summary:
  Overridden function of TStream.Read.
Description:
  By calling this function, data are read from attached stream. For a more
  complete declaration, refer to TStream.Read documentation.
Parameters:
  Buffer - Memory location to store data that were read.
  Count  - Number of requested bytes.
Returns:
  Number of bytes that were effectively placed in the buffer.
See also:
  TJclStreamDecorator.Seek
  TJclStreamDecorator.Write
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.SetStream@TStream
Summary:
  Setter of the Stream property.
Description:
  This function executes required operations to change attached stream:
    - Calling DoBeforeStreamChange internal notifier.
    - Eventually free attached stream if OwnsStream is set.
    - Calling DoAfterStreamchanged internal notifier.
Parameters:
  Value - new stream to attach.
See also:
  TJclStreamDecorator.Stream
  TJclStreamDecorator.DoBeforeStreamChange
  TJclStreamDecorator.OwnsStream
  TJclStreamDecorator.DoAfterStreamChange
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.Stream
Summary:
  Property exposing attached stream.
Description:
  This property exposes attached stream. If the OwnsStream property is set,
  this instance owns attached streams which will be freed when no more needed
  (when changed or when this instance is destroyed).
See also:
  TJclStreamDecorator.SetStream
  TJclStreamDecorator.OwnsStream
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclStreamDecorator.Write@@Longint
Summary:
  Overridden function of TStream.Write.
Description:
  By calling this function, data are written to attached stream. For a more
  complete declaration, refer to TStream.Write documentation.
Parameters:
  Buffer - Memory location to get data to be written.
  Count  - Number of requested bytes.
Returns:
  Number of bytes that were effectively written.
See also:
  TJclStreamDecorator.Read
  TJclStreamDecorator.Seek
Donator:
  Heinz Zastrau
--------------------------------------------------------------------------------
@@TJclMultiplexStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Add@TStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Clear
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Count
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Create
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Delete@Integer
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Destroy
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.FReadStreamIndex
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.FStreams
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.GetCount
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.GetReadStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.GetStream@Integer
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Read@@Longint
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.ReadStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.ReadStreamIndex
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Remove@TStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Seek@Int64@TSeekOrigin
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.SetReadStream@TStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.SetReadStreamIndex@Integer
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.SetSize@Int64
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.SetStream@Integer@TStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Streams
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclMultiplexStream.Write@@Longint
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclRandomStream
Summary:
  Stream that contains an unlimited amount of random data.
Description:
  This class implements a stream containing an ulimited amount of random data.
  Data written to this stream will be discarded.
See also:
  TJclNullStream
  TJclEmptyStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclRandomStream.GetRandSeed
Summary:
  Property getter for random seed value.
Description:
  This function returns current random seed value (System.RandomSeed).
Returns:
  Random seed value.
See also:
  TJclRandomStream.RandSeed
  TJclRandomStream.Randomize
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclRandomStream.RandomData
Summary:
  Generate a byte containing a random value.
Description:
  This function is called in loop by TJclRandomSeed.Read@@Longint to fill
  buffer with random data.
Returns:
  Random data on 8 bits.
See also:
  TJclRandomStream.Read
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclRandomStream.Randomize
Summary:
  Initialize the random seed.
Description:
  This function initializes the random seed value with a value computed from
  computer time. It calls System.Randomize.
See also:
  TJclRandomStream.RandSeed
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclRandomStream.RandSeed
Summary:
  Property exposing current random seed value.
Description:
  The random seed value is used to generate randomized data.
See also:
  TJclRandomStream.RandomData
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclRandomStream.Read@@Longint
Summary:
  Overridden function of TStream.Read.
Description:
  This function fills specified buffer with the requested number of bytes of
  random data. For a more complete description of this function, refer to
  TStream.Read documentation.
Parameters:
  Buffer - Memory location to be filled.
  Count  - Number of bytes to fill.
Returns:
  Effective number of bytes that were filled with random values.
See also:
  TJclRandomStream.RandomData
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclRandomStream.SetRandSeed@Longint
Summary:
  Set random seed to a new value.
Description:
  This function is the setter of the TJclRandomStream.SetRandSeed property.
  It sets the random seed value to a specified value.
  This function is a wrapper around System.RandomSeed.
Parameters:
  Value - New value for the random seed.
See also:
  TJclRandomStream.RandSeed
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream
Summary:
  Stream containing only zeros and discarding all writes.
Description:
  This stream class returns zeros on read operations and discards all changes
  made in write operations. The quantity of data is unlimited but position and
  size are updated after every operations.
See also:
  TJclEmptyStream
  TJclRandomStream
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream.FPosition
Summary:
  Private field storing stream position.
Description:
  This field contains current position of the stream. This value is updated
  after every operations.
See also:
  TJclNullStream.Seek
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream.FSize
Summary:
  Private field storing stream size.
Description:
  This field contains current size of the stream. This value is updated after
  every operations.
See also:
  TJclNullStream.Seek
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream.Read@@Longint
Summary:
  Overridden function of TStream.Read.
Description:
  This function reads the specified number of bytes from the stream. As
  implemented in this class, all returned bytes are set to 0. For a more
  complete description of this function, refer to the documentation of
  TStream.Read.
Parameters:
  Buffer - Memory location to store data.
  Count  - Requested number of bytes.
Returns:
  Number of bytes that were effectively read.
See also:
  TJclNullStream.Seek
  TJclNullStream.SetSize
  TJclNullStream.Write
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream.Seek@Int64@TSeekOrigin
Summary:
  Overridden function of TStream.Seek.
Description:
  This function seeks of the specified number of byte from specified origin.
  For a more complete description of this function, refer to the documentation
  of TStream.Seek.
Parameters:
  Offset - Specified number of bytes to seek from origin.
  Origin - Origin to seek from (soBeginning, soCurrent, soEnd).
Returns:
  New position in the stream relative to the beginning. This function returns
  -1 in case of error.
See also:
  TJclNullStream.Read
  TJclNullStream.SetSize
  TJclNullStream.Write
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream.SetSize@Int64
Summary:
  Overridden procedure of TStream.SetSize.
Description:
  This procedure sets a new size for the stream. For a more complete
  description of this procedure, refer to the documentation of TStream.SetSize.
Parameters:
  Value - New size in bytes.
See also:
  TJclNullStream.Read
  TJclNullStream.Seek
  TJclNullStream.Write
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclNullStream.Write@@Longint
Summary:
  Overridden function of TStream.Write.
Description:
  This function writes the specified number of bytes to the stream. As
  implemented in this class, this function does nothing. For a more complete
  description of this function, refer to the documentation of TStream.Write.
  This function returns the value of Count parameters but discards all changes.
Parameters:
  Buffer - Memory location to store data.
  Count  - Requested number of bytes.
Returns:
  Number of bytes that were effectively written.
See also:
  TJclNullStream.Read
  TJclNullStream.Seek
  TJclNullStream.SetSize
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclEmptyStream
Summary:
  Empty stream class.
Description:
  This stream class is designed to always stay empty. All operations such as
  Read,Write,Seek and Setsize do nothing.
See also:
  TJclNullStream
  TJclRandomStream
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclEmptyStream.SetSize@Int64
Summary
  Overridden procedure of TStream.SetSize.
Description
  This procedure sets a new size for the stream. For a more
  complete description of this procedure, refer to the
  documentation of TStream.SetSize. As implemented, this
  function does nothing to keep stream size to 0.
Parameters
  Value - New size in bytes.
See Also
  TJclEmptyStream.Read
  TJclEmptyStream.Seek
  TJclEmptyStream.Write
Donator
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclEmptyStream.Read@@Longint
Summary:
  Overridden function of TStream.Read.
Description:
  This function reads the specified number of bytes from the stream. As
  implemented in this class, it returns 0. For a more complete description of
  this function, refer to the documentation of TStream.Read.
Parameters:
  Buffer - Memory location to store data.
  Count  - Requested number of bytes.
Returns:
  Number of bytes that were effectively read (in this case 0).
See also:
  TJclEmptyStream.Seek
  TJclEmptyStream.SetSize
  TJclEmptyStream.Write
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclEmptyStream.Seek@Int64@TSeekOrigin
Summary:
  Overridden function of TStream.Seek.
Description:
  This function seeks of the specified number of byte from specified origin.
  As implemented, this function will keep current position tied to 0, if any
  change is requested, it returns -1 flagging an error.
  For a more complete description of this function, refer to the documentation
  of TStream.Seek.
Parameters:
  Offset - Specified number of bytes to seek from origin.
  Origin - Origin to seek from (soBeginning, soCurrent, soEnd).
Returns:
  New position in the stream relative to the beginning (always 0). This
  function returns -1 in case of error.
See also:
  TJclEmptyStream.Read
  TJclEmptyStream.SetSize
  TJclEmptyStream.Write
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclEmptyStream.Write@@Longint
Summary:
  Overridden function of TStream.Write.
Description:
  This function writes the specified number of bytes to the stream. As
  implemented in this class, this function returns 0: no bytes were written to
  the stream. For a more complete description of this function, refer to the
  documentation of TStream.Write.
Parameters:
  Buffer - Memory location to store data.
  Count  - Requested number of bytes.
Returns:
  Number of bytes that were effectively written (0).
See also:
  TJclEmptyStream.Read
  TJclEmptyStream.Seek
  TJclEmptyStream.SetSize
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclFileStream
Summary:
  Stream class storing data in a file.
Description:
  This stream class stores its data in file whose name is specified in this
  class constructor. This class implements the same behaviour as TFileStream
  but inherits from TJclStream.
See also:
  TJclHandleStream
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclFileStream.Create@TFileName@Word@Cardinal
Summary:
  Constructor of the TJclFileStream class.
Description:
  This constructor creates a new instance of the TJclFileStream class.
Parameters:
  FileName - File used to get and store data.
  Mode     - File access mode (fmCreate or any combination of fmOpenRead,
             fmOpenWrite, fmOpenReadWrite, fmShareCompat, fmShareExclusive,
             fmShareDenyWrite, fmShareDenyRead, fmShareDenyNonefmCreate).
  Rights   - (Unix only, valid only if Mode is fmCreate) Bit set specifying
             file access rights
See also:
  TJclFileStream.Destroy
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclFileStream.Destroy
Summary:
  Instance destructor.
Description:
  This destructor destroys current instance and all its associated resources.
See also:
  TJclFileStream.Create
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream
Summary:
  Ancestor class for all streams based on an handle.
Description:
  This class implements all methods to use a valid handle as a storage area for
  the data of this stream.
See also:
  TJclFileStream
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.SetSize@Int64
Donator
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.Create@THandle
Summary:
  Constructor of the TJclHandleStream class.
Description:
  This constructor creates a new instance of the TJclHandleStream class and
  attaches this instance to the specified handle.
Parameters:
  AHandle - Handle to store data. It may be a file handle, a socket or every
            other data handle).
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.FHandle
Summary:
  Private field associated with the Handle property.
Description:
  Private field to store the value of the Handle property.
See also:
  TJclHandleStream.Handle
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.Handle
Summary:
  Property exposing attached handle.
Description:
  This property exposes the handle attached to that instance.
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.Read@@Longint
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.Seek@Int64@TSeekOrigin
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclHandleStream.Write@@Longint
Donator:
  Robert Marquardt
--------------------------------------------------------------------------------
@@TJclStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@!!OVERLOADED_Seek_TJclStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStream.Seek@Int64@TSeekOrigin
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStream.Seek@Longint@Word
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@!!OVERLOADED_SetSize_TJclStream
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStream.SetSize@Int64
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@TJclStream.SetSize@Longint
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
@@EJclStreamError
Donator:
  Florent Ouchet
--------------------------------------------------------------------------------
