1 /*	Public domain	*/
2 
3 /*
4  * Definitions of primitive integer types used throughout Agar. Also
5  * defines AG_HAVE_64BIT and AG_HAVE_LONG_DOUBLE.
6  */
7 
8 #include <agar/config/have_cygwin.h>
9 
10 #if defined(HAVE_CYGWIN)
11 # include <basetyps.h>
12 #else
13 # if !defined(_WIN32)
14 #  include <agar/config/_mk_have_sys_types_h.h>
15 #  ifdef _MK_HAVE_SYS_TYPES_H
16 #   undef _MK_HAVE_SYS_TYPES_H
17 #   include <sys/types.h>
18 #  endif
19 # endif /* !_WIN32 */
20 #endif /* HAVE_CYGWIN */
21 
22 #ifndef _AGAR_HAVE_64BIT_H
23 # include <agar/config/have_64bit.h>
24 # define _AGAR_HAVE_64BIT_H_
25 # ifdef HAVE_64BIT
26 #  include <agar/config/have_int64_t.h>
27 #  include <agar/config/have___int64.h>
28 #  define AG_HAVE_64BIT
29 # endif
30 #endif
31 
32 #ifndef _AGAR_HAVE_LONG_DOUBLE_H_
33 # include <agar/config/have_long_double.h>
34 # define _AGAR_HAVE_LONG_DOUBLE_H_
35 # ifdef HAVE_LONG_DOUBLE
36 #  define AG_HAVE_LONG_DOUBLE
37 # endif
38 #endif
39 
40 #ifndef Uint
41 # define Uint unsigned int
42 # define _AGAR_CORE_DEFINED_UINT
43 #endif
44 #ifndef Uchar
45 # define Uchar unsigned char
46 # define _AGAR_CORE_DEFINED_UCHAR
47 #endif
48 #ifndef Ulong
49 # define Ulong unsigned long
50 # define _AGAR_CORE_DEFINED_ULONG
51 #endif
52 
53 #if defined(_WIN32)
54 # ifndef Sint8
55 #  define Sint8 __int8
56 #  define _AGAR_CORE_DEFINED_SINT8
57 # endif
58 # ifndef Uint8
59 #  define Uint8 unsigned __int8
60 #  define _AGAR_CORE_DEFINED_UINT8
61 # endif
62 # ifndef Sint16
63 #  define Sint16 __int16
64 #  define _AGAR_CORE_DEFINED_SINT16
65 # endif
66 # ifndef Uint16
67 #  define Uint16 unsigned __int16
68 #  define _AGAR_CORE_DEFINED_UINT16
69 # endif
70 # ifndef Sint32
71 #  define Sint32 __int32
72 #  define _AGAR_CORE_DEFINED_SINT32
73 # endif
74 # ifndef Uint32
75 #  define Uint32 unsigned __int32
76 #  define _AGAR_CORE_DEFINED_UINT32
77 # endif
78 # ifndef Sint64
79 #  define Sint64 __int64
80 #  define _AGAR_CORE_DEFINED_SINT64
81 # endif
82 # ifndef Uint64
83 #  define Uint64 unsigned __int64
84 #  define _AGAR_CORE_DEFINED_UINT64
85 # endif
86 #else /* !_WIN32 */
87 # ifndef Sint8
88 #  define Sint8 int8_t
89 #  define _AGAR_CORE_DEFINED_SINT8
90 # endif
91 # ifndef Uint8
92 #  define Uint8 u_int8_t
93 #  define _AGAR_CORE_DEFINED_UINT8
94 # endif
95 # ifndef Sint16
96 #  define Sint16 int16_t
97 #  define _AGAR_CORE_DEFINED_SINT16
98 # endif
99 # ifndef Uint16
100 #  define Uint16 u_int16_t
101 #  define _AGAR_CORE_DEFINED_UINT16
102 # endif
103 # ifndef Sint32
104 #  define Sint32 int32_t
105 #  define _AGAR_CORE_DEFINED_SINT32
106 # endif
107 # ifndef Uint32
108 #  define Uint32 u_int32_t
109 #  define _AGAR_CORE_DEFINED_UINT32
110 # endif
111 # ifdef AG_HAVE_64BIT
112 #  ifndef Sint64
113 #   if defined(HAVE_INT64_T)
114 #    define Sint64 int64_t
115 #   elif defined(HAVE___INT64)
116 #    define Sint64 __int64
117 #   endif
118 #   define _AGAR_CORE_DEFINED_SINT64
119 #  endif
120 #  ifndef Uint64
121 #   if defined(HAVE_INT64_T)
122 #    define Uint64 u_int64_t
123 #   elif defined(HAVE___INT64)
124 #    define Uint64 __int64
125 #   endif
126 #   define _AGAR_CORE_DEFINED_UINT64
127 #  endif
128 # else /* !AG_HAVE_64BIT */
129 typedef struct ag_fake_int64 { Uint32 _pad1; Uint32 _pad2; };
130 #  ifndef Sint64
131 #   define Sint64 struct ag_fake_int64
132 #   define _AGAR_CORE_DEFINED_SINT64
133 #  endif
134 #  ifndef Uint64
135 #   define Uint64 struct ag_fake_int64
136 #   define _AGAR_CORE_DEFINED_UINT64
137 #  endif
138 # endif /* AG_HAVE_64BIT */
139 #endif /* !WIN32 */
140