CoreXform.mesa
Created by Don Curry, February 1, 1986 2:43:22 pm PST
Edited by Don Curry, July 14, 1986 2:09:57 pm PDT
DIRECTORY Core;
CoreXform: CEDAR DEFINITIONS =
BEGIN
Dir:   TYPE = {ll, rr, lr, rl};
Addr:   TYPE = LIST OF INT;
Xform:  TYPE = REF XformSeq;
Xforms:  TYPE = LIST OF XformRec; -- LIST OF [size, toLev]
XformSeq:  TYPE = RECORD[seq: SEQUENCE size: NAT OF XformRec];
XformRec: TYPE = RECORD[size, toLev, fmLev, toSubSize, fmSubSize, temp: INT ← -1];
GenXform:  PROC[xforms: Xforms] RETURNS[ xform:  Xform  ← NIL];
GenXforms:  PROC[xform: Xform] RETURNS[ xforms: Xforms ← NIL];
GetXform:  PROC[from: REF]   RETURNS[ xform:  Xform  ← NIL];
GetXforms:  PROC[from: REF]   RETURNS[ xforms: Xforms ← NIL];
SetXform:  PROC[on: REF,       xform:  Xform];
SetXforms:  PROC[on: REF,       xforms: Xforms];
XformSize:  PROC[from: REF]         RETURNS[domain: INT𡤀];
XformIndex: PROC[xform: Xform, dir: Dir, index: INT] RETURNS[i: INT, a: Addr];
XformAddr:  PROC[xform: Xform, dir: Dir, addr: Addr] RETURNS[i: INT, a: Addr];
Coord:    TYPE = RECORD[degrees, degree, index: INT];
FlatTreeIndex: PROC[size, index: INT] RETURNS[coord: Coord];
LIST[ [6, 0], [4, 1], [8, 2]] => logical-original  (Word/Byte/Bit) access
LIST[ [6, 2], [4, 0], [8, 1]] => sequencial   (Byte/Bit/Word) access
LIST[ [6, 2], [4, 1], [8, 0]] => Interleaved  (Bit/Byte/Word) access
END.