-- BcdControlDefs.Mesa
-- Last edited by Satterthwaite on September 14, 1982 3:27 pm
-- Last edited by Lewis on 21-Apr-81 15:45:10

DIRECTORY
  BcdBindDefs: TYPE USING [RelocHandle],
  Tree: TYPE USING [Link],
  Stream: TYPE USING [Handle];

BcdControlDefs, CompilerUtil: DEFINITIONS = {

 -- stream management

  StreamId: TYPE ~ MACHINE DEPENDENT {source, log, (255)};

  AcquireStream: PROC [StreamId] RETURNS [Stream.Handle];
  ReleaseStream: PROC [StreamId];

 -- binary table management

  TableId: TYPE ~ MACHINE DEPENDENT {parse, (255)};

  AcquireTable: PROC [TableId] RETURNS [LONG POINTER];
  ReleaseTable: PROC [TableId];

 -- scratch zone management
 
  AcquireZone: PROC RETURNS [UNCOUNTED ZONE];
  ReleaseZone: PROC [UNCOUNTED ZONE] ~ INLINE {};
  

 -- binder control
 
  NullSourceIndex: CARDINAL ~ CARDINAL.LAST;

  BuildSemanticEntries: PROC [root: Tree.Link];
  LoadRoot: PROC [root: Tree.Link] RETURNS [BcdBindDefs.RelocHandle];
  BindRoot: PROC [relocationRoot: BcdBindDefs.RelocHandle];
  WriteBcd: PROC [root: Tree.Link];

  BuildSEError: ERROR;
  LoadError: ERROR;
  BindError: ERROR;
  BcdWriteError: ERROR;
  InvalidFileFormat: ERROR;

  PrintTree: PROC [Tree.Link];
  PrintSemanticEntries: PROC;
  PrintBcd: PROC;
  PrintRelocations: PROC [BcdBindDefs.RelocHandle];

  FormatTree: PROC [Stream.Handle, Tree.Link];
  
  }.