fix profiling on Win32
[ghc-hetmet.git] / ghc / includes / HsFFI.h
index 33b76ff..70891a2 100644 (file)
@@ -1,5 +1,4 @@
 /* -----------------------------------------------------------------------------
- * $Id: HsFFI.h,v 1.11 2000/12/04 12:31:20 simonmar Exp $
  *
  * (c) The GHC Team, 2000
  *
 #ifndef HSFFI_H
 #define HSFFI_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* get types from GHC's runtime system */
-#include "config.h"
+#include "ghcconfig.h"
+#include "RtsConfig.h"
 #include "StgTypes.h"
 
 /* get limits for integral types */
@@ -78,13 +82,23 @@ typedef StgWord64           HsWord64;
 typedef StgFloat               HsFloat;
 typedef StgDouble              HsDouble;
 typedef StgBool                        HsBool;
-typedef void*                  HsAddr;         /* this should better match StgAddr */
-typedef void*                  HsForeignObj;   /* ... and this StgForeignPtr       */
+typedef void*                  HsPtr;          /* this should better match StgAddr */
+typedef void                   (*HsFunPtr)(void); /* this should better match StgAddr */
+typedef void*                  HsForeignPtr;   /* ... and this StgForeignPtr       */
 typedef void*                  HsStablePtr;
+typedef void*                  HsAddr;         /* DEPRECATED */
+typedef void*                  HsForeignObj;   /* DEPRECATED */
 
 /* this should correspond to the type of StgChar in StgTypes.h */
 #define HS_CHAR_MIN            0
-#define HS_CHAR_MAX            __INT32_MAX
+#define HS_CHAR_MAX            0x10FFFF
+
+/* is it true or not?  */
+#define HS_BOOL_FALSE           0
+#define HS_BOOL_TRUE            1
+
+#define HS_BOOL_MIN             HS_BOOL_FALSE
+#define HS_BOOL_MAX             HS_BOOL_TRUE
 
 /* this mirrors the distinction of cases in StgTypes.h */
 #if   SIZEOF_VOID_P == 8
@@ -134,4 +148,20 @@ typedef void*                      HsStablePtr;
 #define HS_DOUBLE_MAX_EXP      DBL_MAX_EXP
 #define HS_DOUBLE_MAX_10_EXP   DBL_MAX_10_EXP
 
+extern void hs_init     (int *argc, char **argv[]);
+extern void hs_exit     (void);
+extern void hs_set_argv (int argc, char *argv[]);
+extern void hs_add_root (void (*init_root)(void));
+
+extern void hs_perform_gc (void);
+
+extern void hs_free_stable_ptr (HsStablePtr sp);
+extern void hs_free_fun_ptr    (HsFunPtr fp);
+
+/* -------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* HSFFI_H */