Type families: fixed all non-termination in the testsuite
[ghc-hetmet.git] / includes / Dotnet.h
1 /*
2  * Types and definitions to support GHC .NET interop.
3  *
4  * (c) 2003, sof.
5  *
6  */
7 #ifndef __DOTNET_H__
8 #define __DOTNET_H__
9
10 typedef enum { 
11   Dotnet_Byte = 0,
12   Dotnet_Boolean,
13   Dotnet_Char,
14   Dotnet_Double,
15   Dotnet_Float,
16   Dotnet_Int,
17   Dotnet_Int8,
18   Dotnet_Int16,
19   Dotnet_Int32,
20   Dotnet_Int64,
21   Dotnet_Word8,
22   Dotnet_Word16,
23   Dotnet_Word32,
24   Dotnet_Word64,
25   Dotnet_Ptr,
26   Dotnet_Unit,
27   Dotnet_Object,
28   Dotnet_String
29 } DotnetType;
30
31 typedef union {
32   unsigned char      arg_byte;
33   unsigned int       arg_bool;
34   unsigned char      arg_char;
35   int                arg_int;
36   signed   char      arg_int8;
37   signed   short     arg_int16;
38   signed   int       arg_int32;
39 #if defined(_MSC_VER)
40   signed  __int64    arg_int64;
41 #else
42   signed  long long  arg_int64;
43 #endif
44   float              arg_float;
45   double             arg_double;
46   unsigned char      arg_word8;
47   unsigned short     arg_word16;
48   unsigned int       arg_word32;
49 #if defined(_MSC_VER)
50   unsigned __int64   arg_word64;
51 #else
52   unsigned long long arg_word64;
53 #endif
54   void*              arg_ptr;
55   void*              arg_obj;
56   void*              arg_str;
57 } DotnetArgVal;
58
59 typedef struct {
60   DotnetArgVal arg;
61   DotnetType   arg_type;
62 } DotnetArg;
63
64 #endif /* __DOTNET_H__ */