ICU 4.8.1.1
4.8.1.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
layout
LESwaps.h
Go to the documentation of this file.
1
/*
2
*
3
* (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
4
*
5
*/
6
7
#ifndef __LESWAPS_H
8
#define __LESWAPS_H
9
10
#include "
LETypes.h
"
11
17
U_NAMESPACE_BEGIN
18
25
#define SWAPW(value) LESwaps::swapWord((le_uint16)(value))
26
33
#define SWAPL(value) LESwaps::swapLong((le_uint32)(value))
34
44
class
U_LAYOUT_API
LESwaps
/* not : public UObject because all methods are static */
{
45
public
:
46
57
static
le_uint16
swapWord(
le_uint16
value)
58
{
59
#if (defined(U_IS_BIG_ENDIAN) && U_IS_BIG_ENDIAN) || \
60
(defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || \
61
defined(__BIG_ENDIAN__)
62
// Fastpath when we know that the platform is big-endian.
63
return
value;
64
#else
65
// Reads a big-endian value on any platform.
66
const
le_uint8
*p =
reinterpret_cast<
const
le_uint8
*
>
(&value);
67
return
(
le_uint16
)((p[0] << 8) | p[1]);
68
#endif
69
};
70
81
static
le_uint32
swapLong(
le_uint32
value)
82
{
83
#if (defined(U_IS_BIG_ENDIAN) && U_IS_BIG_ENDIAN) || \
84
(defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || \
85
defined(__BIG_ENDIAN__)
86
// Fastpath when we know that the platform is big-endian.
87
return
value;
88
#else
89
// Reads a big-endian value on any platform.
90
const
le_uint8
*p =
reinterpret_cast<
const
le_uint8
*
>
(&value);
91
return
(
le_uint32
)((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
92
#endif
93
};
94
95
private
:
96
LESwaps
() {}
// private - forbid instantiation
97
};
98
99
U_NAMESPACE_END
100
#endif
Generated on Mon Mar 16 2015 17:10:52 for ICU 4.8.1.1 by
1.8.1.2