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 wpl
00033 {
00034
00035 namespace tool
00036 {
00037
00039 namespace end
00040 {
00041
00043 enum endianness
00044 {
00045 big,
00046 little,
00047 raw,
00048 swap,
00049 guess
00050 };
00051
00052 std::ostream&
00053 operator << (std::ostream&, const endianness& e);
00054
00055 }
00056
00063 bool need_swap(end::endianness tag, bool guess_swap);
00064
00065
00066
00067
00068
00069
00071 uint16_t
00072 extract_unswapped_short_u(const void* p);
00073
00075 uint16_t
00076 extract_swapped_short_u(const uint16_t s);
00077
00080 uint16_t
00081 extract_swapped_short_u(const void* p);
00082
00084 uint16_t
00085 extract_short_u(const void* p, bool swapped);
00086
00088 uint16_t
00089 extract_short_u(const uint16_t s, bool swapped);
00090
00092 uint16_t
00093 extract_big_endian_short_u(const void* p);
00094
00096 uint16_t
00097 extract_big_endian_short_u(const uint16_t s);
00098
00101 uint16_t
00102 extract_little_endian_short_u(const void* p);
00103
00105 uint16_t
00106 extract_little_endian_short_u(const uint16_t s);
00107
00108
00109
00110
00111
00112
00114 uint32_t
00115 extract_unswapped_long_u(const void* p);
00116
00118 uint32_t
00119 extract_swapped_long_u(const uint32_t l);
00120
00123 uint32_t
00124 extract_swapped_long_u(const void* p);
00125
00127 uint32_t
00128 extract_long_u(const void* p, bool swapped);
00129
00131 uint32_t
00132 extract_long_u(const uint32_t l, bool swapped);
00133
00135 uint32_t
00136 extract_big_endian_long_u(const void* p);
00137
00139 uint32_t
00140 extract_big_endian_long_u(const uint32_t l);
00141
00144 uint32_t
00145 extract_little_endian_long_u(const void* p);
00146
00148 uint32_t
00149 extract_little_endian_long_u(const uint32_t l);
00150
00151
00152
00153
00154
00155
00157 int32_t
00158 extract_unswapped_long_s(const void* p);
00159
00161 int32_t
00162 extract_swapped_long_s(const int32_t l);
00163
00166 int32_t
00167 extract_swapped_long_s(const void* p);
00168
00170 int32_t
00171 extract_long_s(const void* p, bool swapped);
00172
00174 int32_t
00175 extract_long_s(const int32_t l, bool swapped);
00176
00178 int32_t
00179 extract_big_endian_long_s(const void* p);
00180
00182 int32_t
00183 extract_big_endian_long_s(const int32_t l);
00184
00187 int32_t
00188 extract_little_endian_long_s(const void* p);
00189
00191 int32_t
00192 extract_little_endian_long_s(const int32_t l);
00193
00194 }
00195
00196 }
00197
00198 # include "endianness.hxx"
00199
00200 #endif // ! TOOL_ENDIANNESS_HH_