-- CS.mesa -- last edit by Schmidt, July 1, 1982 11:29 am -- last edit by Satterthwaite, August 11, 1983 8:23 am -- replacement for Subr.mesa in the Cedar world DIRECTORY File: TYPE USING [Capability, delete, grow, Permissions, read, shrink, write], IO: TYPE USING [STREAM], Rope: TYPE USING [ROPE, Text], Stream: TYPE USING [Handle], TimeStamp: TYPE USING [Stamp]; CS: CEDAR DEFINITIONS ~ { -- variables z: ZONE; -- use this zone to allocate all REF's -- signals FileErrorType: TYPE ~ {notFound, wrongVersion}; FileError: ERROR[error: FileErrorType]; -- CONSTANTS read: File.Permissions ~ File.read; write: File.Permissions ~ File.write+File.grow+File.shrink+File.delete; readWrite: File.Permissions ~ read+write; -- call this to make sure module is started Init: PROC; -- rope utilities RopeToString: UNSAFE PROC[to: LONG STRING, from: Rope.ROPE]; RootName: PROC[name: Rope.ROPE] RETURNS[root: Rope.ROPE]; EndsIn: PROC[str: Rope.ROPE, suf: Rope.Text] RETURNS[BOOL]; EqualRS: PROC[r: Rope.ROPE, s: LONG STRING] RETURNS[equal: BOOL]; EquivalentRS: PROC[r: Rope.ROPE, s: LONG STRING] RETURNS[equivalent: BOOL]; StringToRope: UNSAFE PROC[from: LONG STRING] RETURNS[Rope.ROPE]; CardFromRope: PROC[r: Rope.ROPE] RETURNS[val: LONG CARDINAL]; RopeFromCard: PROC[val: LONG CARDINAL] RETURNS[Rope.ROPE]; StampFromRope: PROC[r: Rope.ROPE] RETURNS[TimeStamp.Stamp]; RopeFromStamp: PROC[stamp: TimeStamp.Stamp] RETURNS[Rope.ROPE]; -- other Confirm: PROC[dch: CHAR, in, out: IO.STREAM] RETURNS[CHAR]; NewStream: UNSAFE PROC[name: Rope.Text, access: File.Permissions] RETURNS[Stream.Handle]; -- npages should not include the leader page; I'll add +1 NewFile: UNSAFE PROC[name: Rope.Text, access: File.Permissions, npages: NAT] RETURNS[File.Capability]; -- iostream utilities SetPFCodes: PROC[h: IO.STREAM]; }.