ScaleOut Native C++ API Library
5.1
Main Page
Classes
Files
File List
All
Classes
Functions
Variables
brg_endian.h
1
/*
2
---------------------------------------------------------------------------
3
Copyright (c) 2003, Dr 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 20/10/2006
31
*/
32
33
#ifndef BRG_ENDIAN_H
34
#define BRG_ENDIAN_H
35
36
#define IS_BIG_ENDIAN 4321
/* byte 0 is most significant (mc68k) */
37
#define IS_LITTLE_ENDIAN 1234
/* byte 0 is least significant (i386) */
38
39
/* Include files where endian defines and byteswap functions may reside */
40
#if defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ )
41
# include <sys/endian.h>
42
#elif defined( BSD ) && ( BSD >= 199103 ) || defined( __APPLE__ ) || \
43
defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ )
44
# include <machine/endian.h>
45
#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ )
46
# if !defined( __MINGW32__ )
47
# include <endian.h>
48
# if !defined( __BEOS__ )
49
# include <byteswap.h>
50
# endif
51
# endif
52
#endif
53
54
/* Now attempt to set the define for platform byte order using any */
55
/* of the four forms SYMBOL, _SYMBOL, __SYMBOL & __SYMBOL__, which */
56
/* seem to encompass most endian symbol definitions */
57
58
#if defined( BIG_ENDIAN ) && defined( LITTLE_ENDIAN )
59
# if defined( BYTE_ORDER ) && BYTE_ORDER == BIG_ENDIAN
60
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
61
# elif defined( BYTE_ORDER ) && BYTE_ORDER == LITTLE_ENDIAN
62
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
63
# endif
64
#elif defined( BIG_ENDIAN )
65
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
66
#elif defined( LITTLE_ENDIAN )
67
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
68
#endif
69
70
#if defined( _BIG_ENDIAN ) && defined( _LITTLE_ENDIAN )
71
# if defined( _BYTE_ORDER ) && _BYTE_ORDER == _BIG_ENDIAN
72
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
73
# elif defined( _BYTE_ORDER ) && _BYTE_ORDER == _LITTLE_ENDIAN
74
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
75
# endif
76
#elif defined( _BIG_ENDIAN )
77
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
78
#elif defined( _LITTLE_ENDIAN )
79
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
80
#endif
81
82
#if defined( __BIG_ENDIAN ) && defined( __LITTLE_ENDIAN )
83
# if defined( __BYTE_ORDER ) && __BYTE_ORDER == __BIG_ENDIAN
84
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
85
# elif defined( __BYTE_ORDER ) && __BYTE_ORDER == __LITTLE_ENDIAN
86
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
87
# endif
88
#elif defined( __BIG_ENDIAN )
89
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
90
#elif defined( __LITTLE_ENDIAN )
91
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
92
#endif
93
94
#if defined( __BIG_ENDIAN__ ) && defined( __LITTLE_ENDIAN__ )
95
# if defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __BIG_ENDIAN__
96
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
97
# elif defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __LITTLE_ENDIAN__
98
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
99
# endif
100
#elif defined( __BIG_ENDIAN__ )
101
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
102
#elif defined( __LITTLE_ENDIAN__ )
103
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
104
#endif
105
106
/* if the platform byte order could not be determined, then try to */
107
/* set this define using common machine defines */
108
#if !defined(PLATFORM_BYTE_ORDER)
109
110
#if defined( __alpha__ ) || defined( __alpha ) || defined( i386 ) || \
111
defined( __i386__ ) || defined( _M_I86 ) || defined( _M_IX86 ) || \
112
defined( __OS2__ ) || defined( sun386 ) || defined( __TURBOC__ ) || \
113
defined( vax ) || defined( vms ) || defined( VMS ) || \
114
defined( __VMS ) || defined( _M_X64 )
115
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
116
117
#elif defined( AMIGA ) || defined( applec ) || defined( __AS400__ ) || \
118
defined( _CRAY ) || defined( __hppa ) || defined( __hp9000 ) || \
119
defined( ibm370 ) || defined( mc68000 ) || defined( m68k ) || \
120
defined( __MRC__ ) || defined( __MVS__ ) || defined( __MWERKS__ ) || \
121
defined( sparc ) || defined( __sparc) || defined( SYMANTEC_C ) || \
122
defined( __VOS__ ) || defined( __TIGCC__ ) || defined( __TANDEM ) || \
123
defined( THINK_C ) || defined( __VMCMS__ )
124
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
125
126
#elif 0
/* **** EDIT HERE IF NECESSARY **** */
127
# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN
128
#elif 0
/* **** EDIT HERE IF NECESSARY **** */
129
# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
130
#else
131
# error Please edit lines 126 or 128 in brg_endian.h to set the platform byte order
132
#endif
133
134
#endif
135
136
#endif
include
soss_client
internal
brg_endian.h
Generated on Wed Sep 11 2013 11:21:42 for ScaleOut Native C++ API Library by
1.8.4