RTI Connext DDS Micro  Version 2.4.11
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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-2015 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 
68 #ifdef RTI_HAVE_LONG_DOUBLE
69 /*i Warning: Microsoft Visual Studio long double is only 8 bytes
70  Verify your implementation before enabling */
71 typedef long double RTI_DOUBLE128;
72 #else
73 /*i
74  */
75 typedef struct RTI_DOUBLE128
76 {
77  char bytes[16];
78 } RTI_DOUBLE128;
79 #endif
80 #else /* !RTI_HAVE_FLOAT */
81 /*i
82  */
83 typedef unsigned int RTI_FLOAT32;
84 
85 /*i
86  */
87 typedef unsigned __int64 RTI_DOUBLE64;
88 
89 /*i
90  */
91 typedef struct RTI_DOUBLE128
92 {
93  char bytes[16];
94 } RTI_DOUBLE128;
95 #endif
96 
97 #elif __STDC__
98 #include <limits.h>
99 #include <stddef.h>
100 
101 #ifndef INT_MAX
102 #error "INT_MAX not defined"
103 #endif
104 
105 #if INT_MAX == 2147483647
106 /*i
107  */
108 typedef signed int RTI_INT32;
109 
110 /*i
111  */
112 typedef unsigned int RTI_UINT32;
113 #else
114 #error "INT_MAX is unknown. Please define RTI_INT32/UINT32"
115 #endif /* INT_MAX */
116 
117 #if SHRT_MAX == 32767
118 /*i
119  */
120 typedef signed short RTI_INT16;
121 
122 /*i
123  */
124 typedef unsigned short RTI_UINT16;
125 #else
126 #error "SHRT_MAX is unknown. Please define RTI_INT16/UINT16"
127 #endif /* SHRT_MAX */
128 
129 #if SCHAR_MAX == 127
130 /*i
131  */
132 typedef signed char RTI_INT8;
133 
134 /*i
135  */
136 typedef unsigned char RTI_UINT8;
137 #else
138 #error "SHRT_MAX is unknown. Please define RTI_INT8/UINT8"
139 #endif /* SCHAR_MAX */
140 
141 #ifdef __LONG_LONG_MAX__
142  #if __LONG_LONG_MAX__ == 9223372036854775807LL
143 /*i
144  */
145  typedef signed long long int RTI_INT64;
146 
147  /*i
148  */
149  typedef unsigned long long int RTI_UINT64;
150  #else
151  #error "__LONG_LONG_MAX__ does not support long long. Please define RTI_INT64/UINT64"
152  #endif
153 #else
154  #ifdef LLONG_MAX
155  /*i
156  */
157  typedef signed long long int RTI_INT64;
158 
159  /*i
160  */
161  typedef unsigned long long int RTI_UINT64;
162  #else
163  #error "__LONG_LONG_MAX__ and LLONG_MAX are unknown. Please define RTI_INT64/UINT64"
164  #endif
165 #endif
166 
167 #ifdef RTI_HAVE_FLOAT
168 /*i
169 */
170 typedef float RTI_FLOAT32;
171 
172 /*i
173  */
174 typedef double RTI_DOUBLE64;
175 #ifdef RTI_HAVE_LONG_DOUBLE
176 #if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 2))
177 
178 /*i
179  */
180 typedef __float128 RTI_DOUBLE128;
181 #else
182 /*i Warning: GNU long double is only 12 bytes
183  * Verify your implementation before enabling
184  */
185 typedef long double RTI_DOUBLE128;
186 #endif
187 #else
188 /*i
189  */
190 typedef struct RTI_DOUBLE128
191 {
192  char bytes[16];
193 } RTI_DOUBLE128;
194 #endif
195 #else
196 /*i
197  */
198 typedef unsigned int RTI_FLOAT32;
199 
200 /*i
201  */
202 typedef unsigned long long int RTI_DOUBLE64;
203 
204 /*i
205  */
206 typedef struct RTI_DOUBLE128
207 {
208  char bytes[16];
209 } RTI_DOUBLE128;
210 #endif
211 #else
212 #error "Non-standard compiler detected. Please define data-types"
213 #endif /* __STDC__ */
214 
215 
216 #endif /* osapi_types_impl_h */

RTI Connext DDS Micro Version 2.4.11 Copyright © Mon Jul 23 2018 Real-Time Innovations, Inc