[project @ 2000-03-10 17:30:36 by lewie]
[ghc-hetmet.git] / ghc / interpreter / connect.h
index f956c6d..1976c9f 100644 (file)
@@ -8,8 +8,8 @@
  * included in the distribution.
  *
  * $RCSfile: connect.h,v $
- * $Revision: 1.18 $
- * $Date: 1999/11/25 10:19:15 $
+ * $Revision: 1.26 $
+ * $Date: 2000/03/10 17:30:36 $
  * ------------------------------------------------------------------------*/
 
 /* --------------------------------------------------------------------------
@@ -17,6 +17,7 @@
  * ------------------------------------------------------------------------*/
 
 extern Bool   haskell98;                /* TRUE => Haskell 98 compatibility*/
+extern Bool   combined;                 /* TRUE => combined operation      */
 extern Module modulePrelude;
 
 /* --------------------------------------------------------------------------
@@ -41,9 +42,7 @@ extern Name  nameIf,      nameSel;
 extern Name  nameCompAux;
 extern Name  namePmInt,   namePmFlt;    /* primitives for pattern matching */
 extern Name  namePmInteger;
-#if NPLUSK
 extern Name  namePmNpk,   namePmSub;    /* primitives for (n+k) patterns   */
-#endif
 extern Name  nameError;                 /* For runtime error messages      */
 extern Name  nameUndefined;             /* A generic undefined value       */
 extern Name  nameBlackHole;             /* For GC-detected black hole      */
@@ -58,11 +57,6 @@ extern Name  nameRange;
 extern Name  nameLe,      nameGt;
 extern Name  nameShowsPrec, nameReadsPrec;
 extern Name  nameMult,    namePlus;
-extern Name  nameConCmp,  nameEnRange;
-extern Name  nameEnIndex, nameEnInRng;
-extern Name  nameEnToEn,  nameEnFrEn;
-extern Name  nameEnFrom,  nameEnFrTh;
-extern Name  nameEnFrTo;
 extern Name  nameComp,    nameApp;      /* composition and append          */
 extern Name  nameShowField;             /* display single field            */
 extern Name  nameShowParen;             /* wrap with parens                */
@@ -80,10 +74,8 @@ extern Text  textPrelude;
 extern Text  textNum;                   /* used to process default decls   */
 extern Text  textCcall;                 /* used to process foreign import  */
 extern Text  textStdcall;               /*         ... and foreign export  */
-
-#if    NPLUSK
 extern Text  textPlus;                  /* Used to recognise n+k patterns  */
-#endif
+
 #if TREX
 extern Name  nameNoRec;                 /* The empty record                */
 extern Type  typeNoRow;                 /* The empty row                   */
@@ -171,10 +163,7 @@ extern String preprocessor;             /* preprocessor command            */
 #if DEBUG_CODE
 extern Bool  debugCode;                 /* TRUE => print G-code to screen  */
 #endif
-#if DEBUG_SHOWSC
 extern Bool  debugSC;                  /* TRUE => print SC to screen  */
-extern Void  printSc Args((FILE*, Text, Int, Cell));
-#endif
 extern Bool  kindExpert;                /* TRUE => display kind errors in  */
                                         /*         full detail             */
 extern Bool  allowOverlap;              /* TRUE => allow overlapping insts */
@@ -185,12 +174,19 @@ extern Bool  allowOverlap;              /* TRUE => allow overlapping insts */
 
 extern Void everybody Args((Int));
 
-#define RESET   1               /* reset subsystem                         */
-#define MARK    2               /* mark parts of graph in use by subsystem */
-#define INSTALL 3               /* install subsystem (executed once only)  */
-#define EXIT    4               /* Take action immediately before exit()   */
-#define BREAK   5               /* Take action after program break         */
-#define GCDONE  6               /* Restore subsystem invariantss after GC  */
+
+#define RESET    1            /* reset subsystem                           */
+#define MARK     2            /* mark parts of graph in use by subsystem   */
+#define PREPREL  3            /* do startup actions before Prelude loading */
+#define POSTPREL 4            /* do startup actions after Prelude loading  */
+#define EXIT     5            /* Take action immediately before exit()     */
+#define BREAK    6            /* Take action after program break           */
+#define GCDONE   7            /* Restore subsystem invariantss after GC    */
+
+/* PREPREL was formerly called INSTALL.  POSTPREL doesn't have an analogy
+   in the old Hugs. 
+*/
+
 
 typedef long   Target;
 extern  Void   setGoal          Args((String, Target));
@@ -278,10 +274,6 @@ extern  Int    discrArity       Args((Cell));
 
 extern  Addr   codeGen          Args((Name,Int,Cell));
 extern  Void   implementCfun    Args((Name,List));
-#if TREX
-extern  Name   implementRecShw  Args((Text,Cell));
-extern  Name   implementRecEq   Args((Text,Cell));
-#endif
 extern  Void   addCfunTable     Args((Tycon));
 extern  Name   succCfun         Args((Name));
 extern  Name   nextCfun         Args((Name,Name));
@@ -314,6 +306,9 @@ extern  Inst   findInstFor      Args((Cell,Int));
 extern  List   findInstsFor     Args((Cell,Int));
 #endif
 
+extern Void ppScripts ( Void );
+extern Void ppModules ( Void );
+
 extern Type primType( Int /*AsmMonad*/ monad, String a_kinds, String r_kinds );
 #define aVar            mkOffset(0)     /* Simple skeleton for type var    */
 
@@ -519,7 +514,7 @@ extern  Void   translateControl Args((Int));
 extern  Void   codegen          Args((Int));
 extern  Void   machdep          Args((Int));
 
-extern Void linkPreludeNames(void);
+extern Void linkPrimitiveNames(void);
 
 extern  Kind  starToStar;                /* Type -> Type                    */
 extern Type  boundPair;                 /* (mkOffset(0),mkOffset(0))       */
@@ -541,6 +536,7 @@ extern Int  outColumn;                 /* current output column number     */
 
 extern Void unlexStrConst  Args((Text));
 extern Void unlexVar       Args((Text));
+extern Void unlexVarStr    Args((String));
 extern List offsetTyvarsIn          Args((Type,List));
 
 extern List cfunSfuns;                  /* List of (Cfun,[SelectorVar])    */
@@ -549,29 +545,25 @@ extern Void  interface        Args((Int));
 
 extern Void getFileSize       Args((String, Long *));
 
-extern Void loadInterface     Args((String,Long));
+extern ZPair readInterface      Args((String,Long));
+extern Bool  processInterfaces  Args((Void));
+extern void  ifLinkConstrItbl ( Name n );
 
-extern Void openGHCIface      Args((Text));
-extern Void loadSharedLib     Args((String));
-extern Void addGHCImports     Args((Int,Text,List));
-extern Void addGHCExports     Args((Cell,List));
-extern Void addGHCVar         Args((Int,Text,Type));
-extern Void addGHCSynonym     Args((Int,Cell,List,Type));
-extern Void addGHCDataDecl    Args((Int,List,Cell,List,List));
-extern Void addGHCNewType     Args((Int,List,Cell,List,Cell));
-extern Void addGHCClass       Args((Int,List,Cell,List,List));
-extern Void addGHCInstance    Args((Int,List,Pair,Text));
-extern Void finishInterfaces  Args((Void));
 
-extern Void hi_o_namesFromSrcName Args((String,String*,String* oName));
-extern Void parseInterface        Args((String,Long));
+extern List /* of ZTriple(I_INTERFACE, 
+                          Text--name of obj file, 
+                          Int--size of obj file) */
+             ifaces_outstanding;
 
 
-#define SMALL_INLINE_SIZE 9
+extern Void hi_o_namesFromSrcName Args((String,String*,String* oName));
+extern Cell parseInterface        Args((String,Long));
 
+extern String getExtraObjectInfo ( String primaryObjectName,
+                                   String extraFileName,
+                                   Int*   extraFileSize );
 
-// nasty hack, but seems an easy to convey the object name
-// and size to openGHCIface
-char nameObj[FILENAME_MAX+1];
-int  sizeObj;
+extern Name         newDSel             Args((Class,Int));
+extern Int          visitClass          Args((Class));
 
+extern Kind  simpleKind         Args((Int));