[project @ 2004-08-13 13:04:50 by simonmar]
[ghc-hetmet.git] / ghc / includes / HsFFI.h
index 60f41d5..a96cb95 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: HsFFI.h,v 1.13 2001/01/03 03:10:32 chak Exp $
+ * $Id: HsFFI.h,v 1.20 2004/08/13 13:09:13 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 */
@@ -87,7 +92,14 @@ 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
@@ -137,4 +149,20 @@ typedef void*                      HsForeignObj;   /* DEPRECATED */
 #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 */