RTI Connext Micro  Version 2.4.1.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
osapi_types_impl.h
Go to the documentation of this file.
1 /*
2  * FILE: osapi_types_impl.h - Implementation of primitive data-types
3  *
4  * Copyright 2012-2014 Real-Time Innovations, Inc.
5  *
6  * No duplications, whole or partial, manual or electronic, may be made
7  * without express written permission. Any such copies, or
8  * revisions thereof, must display this notice unaltered.
9  * This code contains trade secrets of Real-Time Innovations, Inc.
10  *
11  * Modification History
12  * --------------------
13  * 05Jun2012,kaj Add RTI_INT64, RTI_UINT64, RTI_DOUBLE128
14  * 29feb2012,tk Written
15  */
16 /*ce
17  * \file
18  * \brief Primitive data type implementation
19  */
20 /*e \ingroup OSAPITypeClass
21  */
22 
23 #ifndef osapi_types_impl_h
24 #define osapi_types_impl_h
25 
26 #if defined(_M_IX86)
27 /*i
28  */
29 typedef signed int RTI_INT32;
30 
31 /*i
32  */
33 typedef unsigned int RTI_UINT32;
34 
35 /*i
36  */
37 typedef signed short RTI_INT16;
38 
39 /*i
40  */
41 typedef unsigned short RTI_UINT16;
42 
43 /*i
44  */
45 typedef signed char RTI_INT8;
46 
47 /*i
48  */
49 typedef unsigned char RTI_UINT8;
50 
51 /*i
52  */
53 typedef __int64 RTI_INT64;
54 
55 /*i
56  */
57 typedef unsigned __int64 RTI_UINT64;
58 
59 #ifdef RTI_HAVE_FLOAT
60 /*i
61  */
62 typedef float RTI_FLOAT32;
63 
64 /*i
65  */
66 typedef double RTI_DOUBLE64;
67 #ifdef RTI_HAVE_LONG_DOUBLE
68 /*i Warning: Microsoft Visual Studio long double is only 8 bytes
69  Verify your implementation before enabling */
70 typedef long double RTI_DOUBLE128;
71 #else
72 /*i
73  */
74 typedef struct RTI_DOUBLE128
75 {
76  char bytes[16];
77 } RTI_DOUBLE128;
78 #endif
79 #else
80 /*i
81  */
82 typedef unsigned int RTI_FLOAT32;
83 
84 /*i
85  */
86 typedef unsigned __int64 RTI_DOUBLE64;
87 
88 /*i
89  */
90 typedef struct RTI_DOUBLE128 {
91  char bytes[16];
92 } RTI_DOUBLE128;
93 #endif
94 
95 #elif __STDC__
96 #include <limits.h>
97 #include <stddef.h>
98 
99 #ifndef INT_MAX
100 #error "INT_MAX not defined"
101 #endif
102 
103 #if INT_MAX == 2147483647
104 /*i
105  */
106 typedef signed int RTI_INT32;
107 
108 /*i
109  */
110 typedef unsigned int RTI_UINT32;
111 #else
112 #error "INT_MAX is unknown. Please define RTI_INT32/UINT32"
113 #endif /* INT_MAX */
114 
115 #if SHRT_MAX == 32767
116 /*i
117  */
118 typedef signed short RTI_INT16;
119 
120 /*i
121  */
122 typedef unsigned short RTI_UINT16;
123 #else
124 #error "SHRT_MAX is unknown. Please define RTI_INT16/UINT16"
125 #endif /* SHRT_MAX */
126 
127 #if SCHAR_MAX == 127
128 /*i
129  */
130 typedef signed char RTI_INT8;
131 
132 /*i
133  */
134 typedef unsigned char RTI_UINT8;
135 #else
136 #error "SHRT_MAX is unknown. Please define RTI_INT8/UINT8"
137 #endif /* SCHAR_MAX */
138 
139 #ifdef __LONG_LONG_MAX__
140  #if __LONG_LONG_MAX__ == 9223372036854775807LL
141 /*i
142  */
143  typedef signed long long int RTI_INT64;
144 
145  /*i
146  */
147  typedef unsigned long long int RTI_UINT64;
148  #else
149  #error "__LONG_LONG_MAX__ does not support long long. Please define RTI_INT64/UINT64"
150  #endif
151 #else
152  #ifdef LLONG_MAX
153  /*i
154  */
155  typedef signed long long int RTI_INT64;
156 
157  /*i
158  */
159  typedef unsigned long long int RTI_UINT64;
160  #else
161  #error "__LONG_LONG_MAX__ and LLONG_MAX are unknown. Please define RTI_INT64/UINT64"
162  #endif
163 #endif
164 
165 #ifdef RTI_HAVE_FLOAT
166 /*i
167 */
168 typedef float RTI_FLOAT32;
169 
170 /*i
171  */
172 typedef double RTI_DOUBLE64;
173 #ifdef RTI_HAVE_LONG_DOUBLE
174 #if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 2))
175 
176 /*i
177  */
178 typedef __float128 RTI_DOUBLE128;
179 #else
180 /*i Warning: GNU long double is only 12 bytes
181  * Verify your implementation before enabling
182  */
183 typedef long double RTI_DOUBLE128;
184 #endif
185 #else
186 /*i
187  */
188 typedef struct RTI_DOUBLE128
189 {
190  char bytes[16];
191 } RTI_DOUBLE128;
192 #endif
193 #else
194 /*i
195  */
196 typedef unsigned int RTI_FLOAT32;
197 
198 /*i
199  */
200 typedef unsigned long long int RTI_DOUBLE64;
201 
202 /*i
203  */
204 typedef struct RTI_DOUBLE128
205 {
206  char bytes[16];
207 } RTI_DOUBLE128;
208 #endif
209 
210 #elif defined(_M_IX86)
211 /*i
212  */
213 typedef signed int RTI_INT32;
214 
215 /*i
216  */
217 typedef unsigned int RTI_UINT32;
218 
219 /*i
220  */
221 typedef signed short RTI_INT16;
222 
223 /*i
224  */
225 typedef unsigned short RTI_UINT16;
226 
227 /*i
228  */
229 typedef signed char RTI_INT8;
230 
231 /*i
232  */
233 typedef unsigned char RTI_UINT8;
234 
235 /*i
236  */
237 typedef __int64 RTI_INT64;
238 
239 /*i
240  */
241 typedef unsigned __int64 RTI_UINT64;
242 
243 #ifdef RTI_HAVE_FLOAT
244 /*i
245  */
246 typedef float RTI_FLOAT32;
247 
248 /*i
249  */
250 typedef double RTI_DOUBLE64;
251 #ifdef RTI_HAVE_LONG_DOUBLE
252 /*i Warning: Microsoft Visual Studio long double is only 8 bytes
253  * Verify your implementation before enabling
254  */
255 typedef long double RTI_DOUBLE128;
256 #else
257 /*i
258  */
259 typedef struct RTI_DOUBLE128
260 {
261  char bytes[16];
262 } RTI_DOUBLE128;
263 #endif
264 #else
265 /*i
266  */
267 typedef unsigned int RTI_FLOAT32;
268 
269 /*i
270  */
271 typedef unsigned __int64 RTI_DOUBLE64;
272 
273 /*i
274  */
275 typedef struct RTI_DOUBLE128
276 {
277  char bytes[16];
278 } RTI_DOUBLE128;
279 #endif
280 
281 #else
282 #error "Non-standard compiler detected. Please define data-types"
283 #endif /* __STDC__ */
284 
285 
286 #endif /* osapi_types_impl_h */

RTI Connext Micro Version 2.4.1.0 Copyright © Thu Nov 20 2014 Real-Time Innovations, Inc