<> <> <> <> DIRECTORY SafeStorage USING [Type]; Values: CEDAR DEFINITIONS = BEGIN <> <<>> <> <> <> <> <> <> NotRegisteredType: SIGNAL; <> ReRegistration: ERROR; <> Store: PROC [onto: REF, key: REF, val: REF_NIL]; <> <> <> <> Fetch: PROC [from: REF, key: REF, propagate: BOOL_TRUE] RETURNS [val: REF]; <> <> <> <> Insert: PROC [onto: REF, key: REF, val: REF] RETURNS [done: BOOL]; <> <> <> <> Propagate: PROC [from: REF] RETURNS [to: REF]; <> <> <> RegisterKey: PROC [key: REF, registrationKey: REF _ NIL]; <> <> <> <> <> <> <> <> <> <> StoreProc: TYPE = PROC [onto: REF, key: REF, val: REF]; FetchProc: TYPE = PROC [from: REF, key: REF] RETURNS [val: REF_NIL]; InsertProc: TYPE = PROC [onto: REF, key: REF, val: REF] RETURNS [done: BOOL_FALSE]; PropagateProc: TYPE = PROC [from: REF] RETURNS [to: REF_NIL]; <> RegisterType: PROC [referentType: SafeStorage.Type, store: StoreProc _ NIL, fetch: FetchProc _ NIL, insert: InsertProc _ NIL, propagate: PropagateProc _ NIL, registrationKey: REF _ NIL]; <> <> <> <> <> END.