ADTStream

Stream classes which implements concrete streams according to the interface defined in Object.

The following classes are implemented
  • NullStream - Swallow any write operation and return 0 on read operations.

  • MemoryStream - Allocate dynamic memory as needed for operations.

Some methods are inherited from abstract Stream in Object.

Const

INIT_SIZE* = 64;
SeekSet* = Const.SeekSet;
SeekCur* = Const.SeekCur;
SeekEnd* = Const.SeekEnd;

Types

NullStream* = POINTER TO NullStreamDesc;
NullStreamDesc* = RECORD (Object.StreamDesc)END;
MemoryStream* = POINTER TO MemoryStreamDesc;
MemoryStreamDesc* = RECORD (Object.StreamDesc)
        storage : MemoryStorage;
        pos : LONGINT;
        last : LONGINT;
    END;

Procedures

NullStream.ReadBytes

PROCEDURE (s : NullStream) ReadBytes*(VAR buffer : ARRAY OF BYTE; start := 0 : LONGINT; length := - 1 : LONGINT): LONGINT;

NullStream.WriteBytes

Write bytes from buffer with optional start and length.

PROCEDURE (s : NullStream) WriteBytes*(buffer- : ARRAY OF BYTE; start := 0 : LONGINT; length := - 1 : LONGINT): LONGINT;

NullStream.Readable

Return TRUE if Stream is readable

PROCEDURE (s : NullStream) Readable*(): BOOLEAN;

NullStream.Writeable

Return TRUE if Stream is writeable

PROCEDURE (s : NullStream) Writeable*(): BOOLEAN;

NullStream.Seekable

Return TRUE if Stream is seekable

PROCEDURE (s : NullStream) Seekable*(): BOOLEAN;

MemoryStream.Open

Open MemoryStream with optional size (defaults to INIT_SIZE).

Return TRUE if success.

PROCEDURE (s : MemoryStream) Open*(size := INIT_SIZE : LONGINT): BOOLEAN;

MemoryStream.ToString

Copy Stream content to string. The string is possible resized and is NUL terminated.

PROCEDURE (s : MemoryStream) ToString*(VAR str : String.STRING);

MemoryStream.ReadBytes

Read bytes into buffer with optional start and length.

PROCEDURE (s : MemoryStream) ReadBytes*(VAR buffer : ARRAY OF BYTE; start := 0 : LONGINT; length := - 1 : LONGINT): LONGINT;

MemoryStream.Reserve

Resize storage to accomodate capacity

PROCEDURE (s : MemoryStream) Reserve*(capacity  : LONGINT);

MemoryStream.Shrink

Shrink storage if possible

PROCEDURE (s : MemoryStream) Shrink*();

MemoryStream.WriteBytes

Write bytes from buffer with optional start and length.

PROCEDURE (s : MemoryStream) WriteBytes*(buffer- : ARRAY OF BYTE; start := 0 : LONGINT; length := - 1 : LONGINT): LONGINT;

MemoryStream.Format

Writes formatted string according to fmt definition and arguments. Reference Format module for further details. Sets error to StreamWriteError on failure.

PROCEDURE (s : MemoryStream) Format*(fmt- : ARRAY OF CHAR; SEQ seq: SYSTEM.BYTE);

MemoryStream.Seek

Offsets or set the current location depending on the mode argument:

  • SeekSet : sets position relative to start of stream.

  • SeekCur : sets position relative to current position of stream.

  • SeekEnd : sets position relative to end position of stream (only negative offset values makes sense).

Return new position or -1 in case of failure.

PROCEDURE (s : MemoryStream) Seek*(offset : LONGINT; mode := SeekSet : INTEGER): LONGINT;

MemoryStream.Tell

Return current position or -1 on failure.

PROCEDURE (s : MemoryStream) Tell*(): LONGINT;

MemoryStream.Truncate

Truncates or extends stream to new size. Return new size or -1 in case of failure.

PROCEDURE (s : MemoryStream) Truncate*(size : LONGINT): LONGINT;

MemoryStream.Close

Close Stream

PROCEDURE (s : MemoryStream) Close*();

MemoryStream.Closed

Return TRUE if Stream is closed

PROCEDURE (s : MemoryStream) Closed*(): BOOLEAN;

MemoryStream.Readable

Return TRUE if Stream is readable

PROCEDURE (s : MemoryStream) Readable*(): BOOLEAN;

MemoryStream.Writeable

Return TRUE if Stream is writeable

PROCEDURE (s : MemoryStream) Writeable*(): BOOLEAN;

MemoryStream.Seekable

Return TRUE if Stream is seekable

PROCEDURE (s : MemoryStream) Seekable*(): BOOLEAN;