-- SemanticEntry.mesa
-- last edited by Lewis on  2-Apr-81 10:12:43
-- last edited by Satterthwaite, January 12, 1983 11:26 am

DIRECTORY
  BcdDefs: TYPE USING [CTIndex, MTIndex],
  HashTypes: TYPE USING [HTIndex, htNull],
  SourceBcd: TYPE USING [CTreeIndex],
  Table: TYPE USING [Base, Index, Limit];

Symbols, SemanticEntry: DEFINITIONS={
  
 -- Hash Table

  HTIndex: TYPE~HashTypes.HTIndex;
  htNull: HTIndex~HashTypes.htNull;

 -- Semantic Table

  STIndex: TYPE~Table.Base RELATIVE POINTER[0..Table.Limit) TO STRecord;
    STNull: STIndex~STIndex.LAST;

  STRecord: TYPE~RECORD [
    hti: HashTypes.HTIndex, -- name (main part of name if config or module)
    treeNode: Table.Index,   -- (actually Tree.Index) original parse tree node
    kind: SELECT type: * FROM
      unknown => [],
      config => [
        cti: BcdDefs.CTIndex,         -- index in source bcd config table
        cNode: SourceBcd.CTreeIndex], -- config's node in config tree
      module => [
        mti: BcdDefs.MTIndex,         -- index in source bcd module table
        mNode: SourceBcd.CTreeIndex], -- module's node in config tree
      segment => [],
      codePack => [],
      framePack => []
      ENDCASE];
      
   -- for use of proto-modules
   ISEIndex: TYPE~STIndex;

  
 -- Interface
  BuildSemanticEntries: PROC [--root: Tree.Link--];

  }.