-*- Mode: Modula-3 -*- 
 * 
 * For information about this program, contact Blair MacIntyre            
 * (bm@cs.columbia.edu) or Steven Feiner (feiner@cs.columbia.edu)         
 * at the Computer Science Dept., Columbia University,                    
 * 1214 Amsterdam Ave. Mailstop 0401, New York, NY, 10027.                
 *                                                                        
 * Copyright (C) 1995, 1996 by The Trustees of Columbia University in the 
 * City of New York.  Blair MacIntyre, Computer Science Department.       
 * See file COPYRIGHT-COLUMBIA for details.
 * 
 * Author          : Tobias Hoellerer (htobias)
 * Created On      : Fri Nov 10 17:37:04 EST 1995
 * Last Modified By: Blair MacIntyre
 * Last Modified On: Thu Sep 25 08:59:43 1997
 * Update Count    : 9
 * 
 * $Source: /usr/cvs/cm3/m3-comm/sharedobjgen/src/SOxCodeUtils.i3,v $
 * $Date: 2001-12-03 17:23:37 $
 * $Author: wagner $
 * $Revision: 1.2 $
 * 
 * $Log: SOxCodeUtils.i3,v $
 * Revision 1.2  2001-12-03 17:23:37  wagner
 * add copyright notes and overrides
 *
 * added: sharedobjgen/COPYRIGHT
 * added: sharedobjgen/COPYRIGHT-COLUMBIA
 * added: sharedobjgen/src/COPYRIGHT-COLUMBIA
 * added: sharedobjgen/src/m3overrides
 * modified: sharedobjgen/src/SOxCodeFiles.i3
 * modified: sharedobjgen/src/SOxCodeFiles.m3
 * modified: sharedobjgen/src/SOxCodeGenError.i3
 * modified: sharedobjgen/src/SOxCodeGenError.m3
 * modified: sharedobjgen/src/SOxCodeUtils.i3
 * modified: sharedobjgen/src/SOxCodeUtils.m3
 * modified: sharedobjgen/src/SOxCoder.i3
 * modified: sharedobjgen/src/SOxDummyCode.i3
 * modified: sharedobjgen/src/SOxDummyCode.m3
 * modified: sharedobjgen/src/SOxIntfCBCode.i3
 * modified: sharedobjgen/src/SOxIntfCBCode.m3
 * modified: sharedobjgen/src/SOxIntfCBProxyCode.i3
 * modified: sharedobjgen/src/SOxIntfCBProxyCode.m3
 * modified: sharedobjgen/src/SOxIntfPklCode.i3
 * modified: sharedobjgen/src/SOxIntfPklCode.m3
 * modified: sharedobjgen/src/SOxIntfProxyCode.i3
 * modified: sharedobjgen/src/SOxIntfProxyCode.m3
 * modified: sharedobjgen/src/SOxModuleCBCode.i3
 * modified: sharedobjgen/src/SOxModuleCBCode.m3
 * modified: sharedobjgen/src/SOxModuleProxyCode.i3
 * modified: sharedobjgen/src/SOxModuleProxyCode.m3
 * modified: sharedobjgen/src/SOxModuleSOCode.i3
 * modified: sharedobjgen/src/SOxModuleSOCode.m3
 * modified: sharedobjgen/src/StubGenTool.i3
 * modified: sharedobjgen/src/StubGenTool.m3
 *
 * Revision 1.1.1.1  2001/12/02 13:15:54  wagner
 * Blair MacIntyre's sharedobjgen package
 *
 * Revision 1.4  1997/10/22 14:45:10  bm
 * Bug fix.  Naming conflicts.
 *
 * Revision 1.3  1997/08/11 20:36:29  bm
 * Various fixes
 *
 * 
 * HISTORY
 
 Based on GenTypeCode.i3 from the stablegen package       
                                                          
 Copyright (C) 1989, Digital Equipment Corporation        
 All rights reserved.                                     
 See the file COPYRIGHT for a full description.           
 Created by Susan Owicki                                  
 Last modified on Wed Sep 21 09:46:56 PDT 1994 by weich   
      modified On Fri Feb 18 17:30:06 PST 1994 by kalsow  
      Modified On Mon May 17 13:26:35 PDT 1993 by mjordan 
      Modified On Thu Apr 22 11:43:51 PDT 1993 by owicki  
 Provide a procedure to produce Modula-3 code out of type
   structures. Provide a procedure to generate procedure
   header Modula-3 code. 
INTERFACE SOxCodeUtils;
IMPORT Formatter, Type, SOxCodeFiles;
EXCEPTION Error(TEXT);
EXCEPTION Failure;
VAR
  perfMon: BOOLEAN;
  genObliqCode: BOOLEAN;
  genProxyCode: BOOLEAN;
PROCEDURE Message(text: TEXT);
 Write text on  writer stubchatter, preceeded by stubgen:  and
   followed by a newline  
PROCEDURE SetPerfMon(flag: BOOLEAN);
 Set flag to indicate whether stubs should include performance monitoring
   code   
PROCEDURE SetObliqCode(flag: BOOLEAN);
 Set flag to indicate whether stubs should be generated for the
   obliq linkage code 
PROCEDURE SetProxyCode(flag: BOOLEAN);
 Set flag to indicate whether stubs should be generated for the
   proxy code 
PROCEDURE HeaderComment(writer: Formatter.T; fileName: TEXT);
 Write a file header comment for a file to be generated. The file is
   denoted by the typeName and the filetype (i.e. CB_I3, CB_M3, SO_I3
   ...)  
PROCEDURE FileName(baseName: TEXT; filetype: SOxCodeFiles.T): TEXT;
PROCEDURE FileExtension(filetype: SOxCodeFiles.T): TEXT;
PROCEDURE DoFile(filetype: SOxCodeFiles.T): BOOLEAN;
PROCEDURE BaseName(type: Type.Qid): TEXT;
END SOxCodeUtils.