00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TOOL_ENDIANNESS_HH_
00023 # define TOOL_ENDIANNESS_HH_
00024
00025 extern "C"
00026 {
00027 # include <inttypes.h>
00028 }
00029
00030 # include <ostream>
00031
00032 namespace tool
00033 {
00034
00036 namespace endian
00037 {
00039 enum endianness
00040 {
00041 big,
00042 little,
00043 raw,
00044 swap,
00045 guess
00046 };
00047
00048 std::ostream&
00049 operator << (std::ostream&, const endianness& e);
00050
00057 bool need_swap(endianness tag, bool guess_swap);
00058 }
00059
00060
00061
00062
00063
00064
00066 uint16_t
00067 extract_unswapped_short_u(const void* p);
00068
00070 uint16_t
00071 extract_swapped_short_u(const uint16_t s);
00072
00075 uint16_t
00076 extract_swapped_short_u(const void* p);
00077
00079 uint16_t
00080 extract_short_u(const void* p, bool swapped);
00081
00083 uint16_t
00084 extract_short_u(const uint16_t s, bool swapped);
00085
00087 uint16_t
00088 extract_big_endian_short_u(const void* p);
00089
00091 uint16_t
00092 extract_big_endian_short_u(const uint16_t s);
00093
00096 uint16_t
00097 extract_little_endian_short_u(const void* p);
00098
00100 uint16_t
00101 extract_little_endian_short_u(const uint16_t s);
00102
00103
00104
00105
00106
00107
00109 uint32_t
00110 extract_unswapped_long_u(const void* p);
00111
00113 uint32_t
00114 extract_swapped_long_u(const uint32_t l);
00115
00118 uint32_t
00119 extract_swapped_long_u(const void* p);
00120
00122 uint32_t
00123 extract_long_u(const void* p, bool swapped);
00124
00126 uint32_t
00127 extract_long_u(const uint32_t l, bool swapped);
00128
00130 uint32_t
00131 extract_big_endian_long_u(const void* p);
00132
00134 uint32_t
00135 extract_big_endian_long_u(const uint32_t l);
00136
00139 uint32_t
00140 extract_little_endian_long_u(const void* p);
00141
00143 uint32_t
00144 extract_little_endian_long_u(const uint32_t l);
00145
00146
00147
00148
00149
00150
00152 int32_t
00153 extract_unswapped_long_s(const void* p);
00154
00156 int32_t
00157 extract_swapped_long_s(const int32_t l);
00158
00161 int32_t
00162 extract_swapped_long_s(const void* p);
00163
00165 int32_t
00166 extract_long_s(const void* p, bool swapped);
00167
00169 int32_t
00170 extract_long_s(const int32_t l, bool swapped);
00171
00173 int32_t
00174 extract_big_endian_long_s(const void* p);
00175
00177 int32_t
00178 extract_big_endian_long_s(const int32_t l);
00179
00182 int32_t
00183 extract_little_endian_long_s(const void* p);
00184
00186 int32_t
00187 extract_little_endian_long_s(const int32_t l);
00188
00189 }
00190
00191 # include "endianness.hxx"
00192
00193 #endif // ! TOOL_ENDIANNESS_HH_