-- SMFI.mesa
-- last edit by Schmidt, May 3, 1983 11:28 am
-- last edit by Satterthwaite, August 4, 1983 1:33 pm
-- only has types in it, no procs

DIRECTORY
  File: TYPE USING [Capability, nullCapability],
  Rope: TYPE USING [Text],
  TimeStamp: TYPE USING [Stamp],
  SMTree: TYPE Tree USING [Link, null];
	
SMFI: CEDAR DEFINITIONS~{
  OPEN Tree~~SMTree;
  
 -- objects of these types are centrally managed
 -- do not change contents without acquiring the monitor lock of SMFIImpl

  FIState: TYPE~{empty, analyzed, opened};
  
  SrcFileInfo: TYPE~REF SrcFileInfoRecord;
  SrcFileInfoRecord: TYPE~RECORD[
   -- the key
    create: LONG CARDINAL←,	-- file create time
  -- links (private)
    link: SrcFileInfo←,
  -- object type info
    type: Tree.Link←Tree.null,	-- the procedure type
   -- version map info (defer until CFS?)
    host: Rope.Text←NIL,		-- @[host]<directory>shortname!version
    directory: Rope.Text←NIL,	-- in the distributed file system
    shortName: Rope.Text←NIL,
    version: LONG CARDINAL←0,
   -- local file info
    state: FIState←$empty,
    new: BOOL←FALSE,		-- true after Notice and before Compile
    localName: Rope.Text←NIL,	-- for the local disk
    capability: File.Capability←File.nullCapability
    ];
	

  BcdFileInfo: TYPE~REF BcdFileInfoRecord;
  BcdFileInfoRecord: TYPE~RECORD[
   -- the key
    stamp: TimeStamp.Stamp←,	-- version stamp, not create
  -- links (private)
    link: BcdFileInfo←,
   -- object type info
    type: Tree.Link←Tree.null,	-- the procedure type
   -- version map info (defer until CFS?)
    host: Rope.Text←NIL,		-- @[host]<directory>shortname!version
    directory: Rope.Text←NIL,	-- in the distributed file system
    shortName: Rope.Text←NIL,
    version: LONG CARDINAL←0,
   -- local file info
    state: FIState←$empty,
    localName: Rope.Text←NIL,	-- for the local disk
    capability: File.Capability←File.nullCapability
    ];
    	
  }.