<> <> <> <> <<>> DIRECTORY ; SVStoragePools: CEDAR DEFINITIONS = BEGIN MakeStorageProc: TYPE = PROC [pool: StoragePool]; InitializePoolProc: 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, init: InitializePoolProc, allocate: AllocateProc, free: FreeProc ]; StoragePool: TYPE = REF StoragePoolObj; StoragePoolObj: TYPE = MONITORED RECORD [ class: StoragePoolClass, data: REF ANY ]; CreateClass: PROC [name: ATOM, init: InitializePoolProc, allocate: AllocateProc, free: FreeProc] RETURNS [class: StoragePoolClass]; CreatePool: PROC [class: StoragePoolClass, makeStorage: MakeStorageProc] RETURNS [pool: StoragePool]; <> Initialize: PROC [pool: StoragePool]; <> Allocate: PROC [pool: StoragePool] RETURNS [item: REF ANY]; Free: PROC [pool: StoragePool, item: REF ANY]; END.