Tidy up file headers and copyrights; point to the wiki for docs
[ghc-hetmet.git] / includes / rts / Types.h
1 /* -----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 1998-2009
4  *
5  * RTS-specific types.
6  *
7  * Do not #include this file directly: #include "Rts.h" instead.
8  *
9  * To understand the structure of the RTS headers, see the wiki:
10  *   http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
11  *
12  * ---------------------------------------------------------------------------*/
13
14 #ifndef RTS_TYPES_H
15 #define RTS_TYPES_H
16
17 typedef unsigned int  nat;           /* at least 32 bits (like int) */
18 typedef unsigned long lnat;          /* at least 32 bits            */
19 #ifndef _MSC_VER
20 typedef unsigned long long ullong;   /* at least 32 bits            */
21 typedef long long llong;
22 #else
23 typedef unsigned __int64   ullong;   /* at least 32 bits            */
24 typedef __int64 llong;
25 #endif
26
27 /* ullong (64|128-bit) type: only include if needed (not ANSI) */
28 #if defined(__GNUC__) 
29 #define LL(x) (x##LL)
30 #else
31 #define LL(x) (x##L)
32 #endif
33   
34 typedef enum { 
35     rtsFalse = 0, 
36     rtsTrue 
37 } rtsBool;
38
39 typedef struct StgClosure_   StgClosure;
40 typedef struct StgInfoTable_ StgInfoTable;
41 typedef struct StgTSO_       StgTSO;
42
43 #endif /* RTS_TYPES_H */