<> <> <> <> <<>> DIRECTORY ; GGStoragePools: CEDAR DEFINITIONS = BEGIN MakeStorageProc: TYPE = PROC [pool: StoragePool]; AllocateProc: TYPE = PROC [pool: StoragePool] RETURNS [item: REF ANY]; FreeProc: TYPE = PROC [pool: StoragePool, item: REF ANY]; StoragePoolClass: TYPE = REF StoragePoolClassObj; StoragePoolClassObj: TYPE = RECORD [ name: ATOM, allocate: AllocateProc, free: FreeProc ]; StoragePool: TYPE = REF StoragePoolObj; StoragePoolObj: TYPE = MONITORED RECORD [ class: StoragePoolClass, data: REF ANY ]; CreateClass: PROC [name: ATOM, allocate: AllocateProc, free: FreeProc] RETURNS [class: StoragePoolClass]; <> CreatePool: PROC [class: StoragePoolClass, makeStorage: MakeStorageProc] RETURNS [pool: StoragePool]; <> <<>> Allocate: PROC [pool: StoragePool] RETURNS [item: REF ANY]; <> Free: PROC [pool: StoragePool, item: REF ANY]; <> END.