<> <> IPVector: CEDAR DEFINITIONS ~ BEGIN <> Any: TYPE ~ REF; Cardinal: TYPE ~ INT--[0..maxCardinal]--; VectorShape: TYPE ~ RECORD[lowerBound: Cardinal, size: INT -- [0..maxCardinal+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 ]; END. <> <> <<>>