ADTSet

Set which s a hash table for values based on ADTDictionary

Two set types are implemented
  • SetInt (LONGINT value)

  • SetStr (STRING value)

Other types can be implemented by method of type extension. Note that this solution comes with a overhead (~2x) and if speed is needed it should be implemented as stand alone.

Adapted from Ben Hoyt article about hash tables. License is MIT.

Types

IntEntry* = POINTER TO IntEntryDesc;
SetInt* = POINTER TO SetIntDesc;
SetIntIterator* = POINTER TO SetIntIteratorDesc;
StrEntry* = POINTER TO StrEntryDesc;
SetStr* = POINTER TO SetStrDesc;
SetStrIterator* = POINTER TO SetStrIteratorDesc;

Procedures

SetInt.In

Return TRUE if set has given value

PROCEDURE (this : SetInt) In*(value : LONGINT): BOOLEAN;

SetInt.Add

Add value to set

PROCEDURE (this : SetInt) Add*(value : LONGINT): BOOLEAN;

SetInt.Remove

Mark entry as deleted. Return TRUE if entry exists

PROCEDURE (this : SetInt) Remove*(value : LONGINT): BOOLEAN;

SetInt.Iterator

Get set iterator

PROCEDURE (this : SetInt) Iterator*(): SetIntIterator;

SetIntIterator.Value

Get current iterator entry’s value

PROCEDURE (this : SetIntIterator) Value*(): LONGINT;

SetInt.Values

Return Vector of values

PROCEDURE (this : SetInt) Values*(): Vector.VectorOfLongInt;

SetStr.In

Return TRUE if set has given value

PROCEDURE (this : SetStr) In*(value : ARRAY OF CHAR): BOOLEAN;

SetStr.Add

Add value to set

PROCEDURE (this : SetStr) Add*(value : ARRAY OF CHAR): BOOLEAN;

SetStr.Remove

Mark entry as deleted. Return TRUE if entry exists

PROCEDURE (this : SetStr) Remove*(value : ARRAY OF CHAR): BOOLEAN;

SetStr.Iterator

Get set iterator

PROCEDURE (this : SetStr) Iterator*(): SetStrIterator;

SetStrIterator.Value

Get current iterator entry’s value

PROCEDURE (this : SetStrIterator) Value*(): S.STRING;

SetStr.Values

Return Vector of values

PROCEDURE (this : SetStr) Values*(): Vector.VectorOfString;