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 namespace tool
00031 {
00032
00034 namespace endian
00035 {
00037 enum endianness
00038 {
00039 big,
00040 little,
00041 raw,
00042 swap,
00043 guess
00044 };
00045
00052 bool need_swap(endianness tag, bool guess_swap);
00053 }
00054
00055
00056
00057
00058
00059
00061 uint16_t
00062 extract_unswapped_short_u(const void* p);
00063
00065 uint16_t
00066 extract_swapped_short_u(const uint16_t s);
00067
00070 uint16_t
00071 extract_swapped_short_u(const void* p);
00072
00074 uint16_t
00075 extract_short_u(const void* p, bool swapped);
00076
00078 uint16_t
00079 extract_short_u(const uint16_t s, bool swapped);
00080
00082 uint16_t
00083 extract_big_endian_short_u(const void* p);
00084
00086 uint16_t
00087 extract_big_endian_short_u(const uint16_t s);
00088
00091 uint16_t
00092 extract_little_endian_short_u(const void* p);
00093
00095 uint16_t
00096 extract_little_endian_short_u(const uint16_t s);
00097
00098
00099
00100
00101
00102
00104 uint32_t
00105 extract_unswapped_long_u(const void* p);
00106
00108 uint32_t
00109 extract_swapped_long_u(const uint32_t l);
00110
00113 uint32_t
00114 extract_swapped_long_u(const void* p);
00115
00117 uint32_t
00118 extract_long_u(const void* p, bool swapped);
00119
00121 uint32_t
00122 extract_long_u(const uint32_t l, bool swapped);
00123
00125 uint32_t
00126 extract_big_endian_long_u(const void* p);
00127
00129 uint32_t
00130 extract_big_endian_long_u(const uint32_t l);
00131
00134 uint32_t
00135 extract_little_endian_long_u(const void* p);
00136
00138 uint32_t
00139 extract_little_endian_long_u(const uint32_t l);
00140
00141
00142
00143
00144
00145
00147 int32_t
00148 extract_unswapped_long_s(const void* p);
00149
00151 int32_t
00152 extract_swapped_long_s(const int32_t l);
00153
00156 int32_t
00157 extract_swapped_long_s(const void* p);
00158
00160 int32_t
00161 extract_long_s(const void* p, bool swapped);
00162
00164 int32_t
00165 extract_long_s(const int32_t l, bool swapped);
00166
00168 int32_t
00169 extract_big_endian_long_s(const void* p);
00170
00172 int32_t
00173 extract_big_endian_long_s(const int32_t l);
00174
00177 int32_t
00178 extract_little_endian_long_s(const void* p);
00179
00181 int32_t
00182 extract_little_endian_long_s(const int32_t l);
00183
00184 }
00185
00186 # include "endianness.hxx"
00187
00188 #endif // ! TOOL_ENDIANNESS_HH_