-- Copyright (C) 1985, 1986  by Xerox Corporation. All rights reserved. 
-- CBasics.mesa
-- NFS		18-Dec-85 15:01:02
-- BGY		11-Mar-86 14:51:55
-- MEW		14-Apr-86 13:14:45

DIRECTORY
  AtomVariants USING [ATRecord],
  CString USING [CString],
  Stream USING [Handle];
CBasics: DEFINITIONS = {

  ArraySpaceHandle: TYPE = LONG POINTER TO ArraySpace;
  ArraySpace: TYPE;

  FilePtr: TYPE = LONG POINTER TO Stream.Handle;

  ArgChoice: TYPE = MACHINE DEPENDENT{neither, justArgC, both};
  MainProc: TYPE = MACHINE DEPENDENT RECORD [
    proc(0): SELECT args(0): ArgChoice FROM
      neither => [main0(1): PROCEDURE RETURNS [INTEGER]],
      justArgC => [main1(1): PROCEDURE [argC: CARDINAL] RETURNS [INTEGER]],
      both => [
        main2(1): PROCEDURE [
	  argC: CARDINAL, argV: LONG POINTER TO CString.CString]
          RETURNS [INTEGER]],
      ENDCASE];
  
  CommonRecPtr: TYPE = LONG POINTER TO AtomVariants.ATRecord;

  RegisterConfig: PROCEDURE [wordsNeeded: LONG CARDINAL];
  RegisterFrame: PROCEDURE [wordsNeeded: LONG CARDINAL] 
    RETURNS [ArraySpaceHandle];
  NextArray: PROCEDURE [heap: ArraySpaceHandle, nWords: LONG CARDINAL]
    RETURNS [next: LONG POINTER];
  CallMain: PROCEDURE [main: MainProc];
  
  GetBcdInfo: PROCEDURE RETURNS [numArgs: CARDINAL, arraySize: LONG CARDINAL,
    commonInfo: CommonRecPtr];
    
  StartConfig: PROCEDURE;
  

  GetCommons: PROCEDURE [comm: CommonRecPtr, comSpace: ArraySpaceHandle];
  GetCommonSize: PROCEDURE [comm: CommonRecPtr]
    RETURNS [totSize: LONG CARDINAL ← 0];


  }.