-- file FileParms.mesa
-- last edited by Satterthwaite, 23-Mar-82 16:30:19

DIRECTORY
  FileSegment: TYPE USING [Pages, nullPages],
  Strings: TYPE USING [String, SubStringDescriptor],
  TimeStamp: TYPE USING [Stamp, Null];
  
FileParms: DEFINITIONS = {

 -- data types
 
  Name: TYPE = Strings.SubStringDescriptor;
   
  ActualId: TYPE = RECORD [
    version: TimeStamp.Stamp,	-- computed version stamp
    locator: Name];		-- interpreted by implementation
       
  SymbolSpace: TYPE = FileSegment.Pages;

   
 -- constants
 
  nullName: Name = [NIL, 0, 0];
  nullFormal: Name = nullName;
  nullActual: ActualId = [TimeStamp.Null, nullName];
  nullSymbolSpace: SymbolSpace = FileSegment.nullPages;   

 -- op record
 
  BindingProc: TYPE = PROC [actual: ActualId];

  Ops: TYPE = RECORD [
    Binding: PROC [
      formalId, formalType: Name, defaultLocator: Strings.String ← NIL,
      binder: BindingProc],
    Acquire: PROC [Name, ActualId] RETURNS [SymbolSpace],
    Release: PROC [SymbolSpace],
    Forget: PROC [ActualId]];
   
  }.