ScaleOut Native C++ API Library
5.1
Main Page
Classes
Files
File List
All
Classes
Functions
Variables
brg_types.h
1
/*
2
---------------------------------------------------------------------------
3
Copyright (c) 1998-2006, Brian Gladman, Worcester, UK. All rights reserved.
4
5
LICENSE TERMS
6
7
The free distribution and use of this software in both source and binary
8
form is allowed (with or without changes) provided that:
9
10
1. distributions of this source code include the above copyright
11
notice, this list of conditions and the following disclaimer;
12
13
2. distributions in binary form include the above copyright
14
notice, this list of conditions and the following disclaimer
15
in the documentation and/or other associated materials;
16
17
3. the copyright holder's name is not used to endorse products
18
built using this software without specific written permission.
19
20
ALTERNATIVELY, provided that this notice is retained in full, this product
21
may be distributed under the terms of the GNU General Public License (GPL),
22
in which case the provisions of the GPL apply INSTEAD OF those given above.
23
24
DISCLAIMER
25
26
This software is provided 'as is' with no explicit or implied warranties
27
in respect of its properties, including, but not limited to, correctness
28
and/or fitness for purpose.
29
---------------------------------------------------------------------------
30
Issue 09/09/2006
31
32
The unsigned integer types defined here are of the form uint_<nn>t where
33
<nn> is the length of the type; for example, the unsigned 32-bit type is
34
'uint_32t'. These are NOT the same as the 'C99 integer types' that are
35
defined in the inttypes.h and stdint.h headers since attempts to use these
36
types have shown that support for them is still highly variable. However,
37
since the latter are of the form uint<nn>_t, a regular expression search
38
and replace (in VC++ search on 'uint_{:z}t' and replace with 'uint\1_t')
39
can be used to convert the types used here to the C99 standard types.
40
*/
41
42
#ifndef BRG_TYPES_H
43
#define BRG_TYPES_H
44
45
#if defined(__cplusplus)
46
extern
"C"
{
47
#endif
48
49
#include <limits.h>
50
51
#ifndef BRG_UI8
52
# define BRG_UI8
53
# if UCHAR_MAX == 255u
54
typedef
unsigned
char
uint_8t;
55
# else
56
# error Please define uint_8t as an 8-bit unsigned integer type in brg_types.h
57
# endif
58
#endif
59
60
#ifndef BRG_UI16
61
# define BRG_UI16
62
# if USHRT_MAX == 65535u
63
typedef
unsigned
short
uint_16t;
64
# else
65
# error Please define uint_16t as a 16-bit unsigned short type in brg_types.h
66
# endif
67
#endif
68
69
#ifndef BRG_UI32
70
# define BRG_UI32
71
# if UINT_MAX == 4294967295u
72
# define li_32(h) 0x##h##u
73
typedef
unsigned
int
uint_32t;
74
# elif ULONG_MAX == 4294967295u
75
# define li_32(h) 0x##h##ul
76
typedef
unsigned
long
uint_32t;
77
# elif defined( _CRAY )
78
# error This code needs 32-bit data types, which Cray machines do not provide
79
# else
80
# error Please define uint_32t as a 32-bit unsigned integer type in brg_types.h
81
# endif
82
#endif
83
84
#ifndef BRG_UI64
85
# if defined( __BORLANDC__ ) && !defined( __MSDOS__ )
86
# define BRG_UI64
87
# define li_64(h) 0x##h##ull
88
typedef
unsigned
__int64 uint_64t;
89
# elif defined( _MSC_VER ) && ( _MSC_VER < 1300 )
/* 1300 == VC++ 7.0 */
90
# define BRG_UI64
91
# define li_64(h) 0x##h##ui64
92
typedef
unsigned
__int64 uint_64t;
93
# elif defined( __sun ) && defined(ULONG_MAX) && ULONG_MAX == 0xfffffffful
94
# define BRG_UI64
95
# define li_64(h) 0x##h##ull
96
typedef
unsigned
long
long
uint_64t;
97
# elif defined( UINT_MAX ) && UINT_MAX > 4294967295u
98
# if UINT_MAX == 18446744073709551615u
99
# define BRG_UI64
100
# define li_64(h) 0x##h##u
101
typedef
unsigned
int
uint_64t;
102
# endif
103
# elif defined( ULONG_MAX ) && ULONG_MAX > 4294967295u
104
# if ULONG_MAX == 18446744073709551615ul
105
# define BRG_UI64
106
# define li_64(h) 0x##h##ul
107
typedef
unsigned
long
uint_64t;
108
# endif
109
# elif defined( ULLONG_MAX ) && ULLONG_MAX > 4294967295u
110
# if ULLONG_MAX == 18446744073709551615ull
111
# define BRG_UI64
112
# define li_64(h) 0x##h##ull
113
typedef
unsigned
long
long
uint_64t;
114
# endif
115
# elif defined( ULONG_LONG_MAX ) && ULONG_LONG_MAX > 4294967295u
116
# if ULONG_LONG_MAX == 18446744073709551615ull
117
# define BRG_UI64
118
# define li_64(h) 0x##h##ull
119
typedef
unsigned
long
long
uint_64t;
120
# endif
121
# endif
122
#endif
123
124
#if defined( NEED_UINT_64T ) && !defined( BRG_UI64 )
125
# error Please define uint_64t as an unsigned 64 bit type in brg_types.h
126
#endif
127
128
#ifndef RETURN_VALUES
129
# define RETURN_VALUES
130
# if defined( DLL_EXPORT )
131
# if defined( _MSC_VER ) || defined ( __INTEL_COMPILER )
132
# define VOID_RETURN __declspec( dllexport ) void __stdcall
133
# define INT_RETURN __declspec( dllexport ) int __stdcall
134
# elif defined( __GNUC__ )
135
# define VOID_RETURN __declspec( __dllexport__ ) void
136
# define INT_RETURN __declspec( __dllexport__ ) int
137
# else
138
# error Use of the DLL is only available on the Microsoft, Intel and GCC compilers
139
# endif
140
# elif defined( DLL_IMPORT )
141
# if defined( _MSC_VER ) || defined ( __INTEL_COMPILER )
142
# define VOID_RETURN __declspec( dllimport ) void __stdcall
143
# define INT_RETURN __declspec( dllimport ) int __stdcall
144
# elif defined( __GNUC__ )
145
# define VOID_RETURN __declspec( __dllimport__ ) void
146
# define INT_RETURN __declspec( __dllimport__ ) int
147
# else
148
# error Use of the DLL is only available on the Microsoft, Intel and GCC compilers
149
# endif
150
# elif defined( __WATCOMC__ )
151
# define VOID_RETURN void __cdecl
152
# define INT_RETURN int __cdecl
153
# else
154
# define VOID_RETURN void
155
# define INT_RETURN int
156
# endif
157
#endif
158
159
/* These defines are used to declare buffers in a way that allows
160
faster operations on longer variables to be used. In all these
161
defines 'size' must be a power of 2 and >= 8
162
163
dec_unit_type(size,x) declares a variable 'x' of length
164
'size' bits
165
166
dec_bufr_type(size,bsize,x) declares a buffer 'x' of length 'bsize'
167
bytes defined as an array of variables
168
each of 'size' bits (bsize must be a
169
multiple of size / 8)
170
171
ptr_cast(x,size) casts a pointer to a pointer to a
172
varaiable of length 'size' bits
173
*/
174
175
#define ui_type(size) uint_##size##t
176
#define dec_unit_type(size,x) typedef ui_type(size) x
177
#define dec_bufr_type(size,bsize,x) typedef ui_type(size) x[bsize / (size >> 3)]
178
#define ptr_cast(x,size) ((ui_type(size)*)(x))
179
180
#if defined(__cplusplus)
181
}
182
#endif
183
184
#endif
include
soss_client
internal
brg_types.h
Generated on Wed Sep 11 2013 11:21:42 for ScaleOut Native C++ API Library by
1.8.4