--m.stone September 26, 1980  5:23 PM
--SplineMemoryFns

DIRECTORY
	SplineMemoryDefs: FROM "SplineMemoryDefs",
	SplineDefs: FROM "SplineDefs";

SplineMemoryFns: PROGRAM EXPORTS SplineMemoryDefs,SplineDefs = 
BEGIN
thisAllocate:  PROCEDURE[nwords: CARDINAL] RETURNS[POINTER] ← NoAlloc;
thisFree: PUBLIC PROCEDURE[ptr: POINTER TO UNSPECIFIED] ← NoFree;

NoInitSplines: PUBLIC SIGNAL  = CODE;

Allocate: PUBLIC PROCEDURE[nwords: CARDINAL] RETURNS[POINTER] =
BEGIN
RETURN[thisAllocate[nwords]];
END;

Free: PUBLIC PROCEDURE[ptr: POINTER TO UNSPECIFIED] =
BEGIN
thisFree[ptr];
END;

NoAlloc: PROCEDURE[nwords: CARDINAL] RETURNS[POINTER] =
BEGIN
SIGNAL NoInitSplines;
RETURN[NIL];
END;

NoFree: PROCEDURE[ptr: POINTER TO UNSPECIFIED]  =
BEGIN
SIGNAL NoInitSplines;
END;

InitSplines: PUBLIC PROCEDURE[
	alloc: PROCEDURE[nwords: CARDINAL] RETURNS[POINTER],
	free: PROCEDURE[POINTER TO UNSPECIFIED]] =
BEGIN
thisAllocate ← alloc;
thisFree ← free;
END;

FreeCoeffs: PUBLIC PROCEDURE[coeffs: DESCRIPTOR FOR ARRAY OF SplineDefs.Coeffs] =
BEGIN
Free[BASE[coeffs]];
END;

END.