-- BBSafety.mesa
-- Russ Atkinson, August 17, 1982 11:24 am

DIRECTORY
Rope USING [ROPE],
WorldVM USING [Address, World];

BBSafety: CEDAR DEFINITIONS
= BEGIN OPEN Rope, WorldVM;

IsValidRef: PROC [world: World, ref: Address] RETURNS [BOOL];
-- returns TRUE iff the address is a valid ref in the given world
-- note: IsValidRef[w,a] => IsValidAddr[w,a]

IsValidAddr: PROC [world: World, addr: Address] RETURNS [BOOL];
-- returns TRUE iff the address is valid in the given world

Mother: PROC [inner: PROC] RETURNS [ROPE];
-- returns NIL if inner was successful
-- otherwise returns a rope describing an RTTypes-related failure
-- (RTSymbols: CantFindFile, ModuleVersionMismatch, NoSymbols)
-- (RTTypes: NotImplemented, TypeFault)
-- (RTTypesBasic: InvalidType)
-- if ANY, protect against any failure (return "ANY")

END.