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;