RTI Connext DDS Micro
Version 2.4.9
Main Page
Related Pages
Manuals
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.9
Copyright © Thu Dec 15 2016
Real-Time Innovations, Inc