DEFINITION MODULE OutModule;

 (* 
    This module is used as a "go-between" between the processing part of the
    the program and the file part of the program. 
    It keeps track of columns outputed for word wrap which goes into effect 
    if the object line is a lot longer than the source line and won't fit.
    Setting the debug option will print the data that is being sent to the
    actual external file to the screen.
 *)

FROM scan    IMPORT IndentArray, STRING;



PROCEDURE output ( indent   : IndentArray ;    
                   word     : STRING );

 
 (* If there are blanks in the InFile that we are about to read
    then this procedure will tack the blanks on to the back of
    of the symbol automatically. If the next character is not a blank
    then no blanks are added on to the symbol string
 *)
PROCEDURE AddBlanks ( VAR symbol : STRING       ) ;


PROCEDURE identical ( s1, s1 : STRING  ) : BOOLEAN;


 (* Read first options of a one or two option command like so:
              INC ( i , 1 )   OR  INC ( i )
                   ^^^                 ^^^      -> returned value
                       |                  |     -> ptr to next char.

                  The comma is read and thrown out in the first case.
 *)
PROCEDURE FirstOption  ( VAR  symbol : STRING );



 (* Use to get retrieve a second option of a two option command. 
    This is used after a call to FirstOption(). 
    Here is a picture :
             INC ( i , 1 ) ;   OR   INC ( i ) ;
                      |                     |     -> start on entry
                          |                  |    -> finish on exit
 *)
PROCEDURE SecondOption ( VAR  symbol : STRING);


 (* Put the string "begin" in the output file either on the same line
    we've been using or on the next line according to the default 
    parameters.
 *)
PROCEDURE PutBEGIN  ( indent  : IndentArray  );

PROCEDURE WriteIndent ( indent  : IndentArray );

END OutModule.
