Removed from IPInterpreter because of a circular reference between IPInterpreter USING [Vector], and IPMaster USING [Body, Op, Token]
Any: TYPE ~ REF;
Cardinal: TYPE ~ INT--[0..maxCardinal]--;
VectorShape:
TYPE ~
RECORD[lowerBound: Cardinal, size:
INT
-- [0..maxCardinal+1] --];
Upper bound "u" = lowerBound+size-1.
Vector: TYPE ~ REF VectorRep;
VectorRep:
TYPE ~
RECORD[class: VectorClass, data:
REF];
VectorClass: TYPE ~ REF VectorClassRep;
VectorClassRep:
TYPE ~
RECORD[
type: ATOM, -- $Array, $Merged, $String, ...
shape: PROC [v: Vector] RETURNS [VectorShape],
get: PROC [v: Vector, i: Cardinal] RETURNS [Any],
getCardinal: PROC [v: Vector, i: Cardinal] RETURNS [Cardinal],
getProp: PROC [v: Vector, propName: Any] RETURNS [found: BOOL, value: Any] ← NIL
];