51inline void endian_16lo8 (uint_least16_t &word, uint8_t
byte)
58inline uint8_t endian_16lo8 (uint_least16_t word)
60 return (uint8_t) word;
64inline void endian_16hi8 (uint_least16_t &word, uint8_t
byte)
67 word |= (uint_least16_t)
byte << 8;
71inline uint8_t endian_16hi8 (uint_least16_t word)
73 return (uint8_t) (word >> 8);
77inline void endian_16swap8 (uint_least16_t &word)
79 uint8_t lo = endian_16lo8 (word);
80 uint8_t hi = endian_16hi8 (word);
81 endian_16lo8 (word, hi);
82 endian_16hi8 (word, lo);
86inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo)
88 uint_least16_t word = 0;
89 endian_16lo8 (word, lo);
90 endian_16hi8 (word, hi);
95inline void endian_16 (uint8_t ptr[2], uint_least16_t word)
97# if defined(WORDS_BIGENDIAN)
98 ptr[0] = endian_16hi8 (word);
99 ptr[1] = endian_16lo8 (word);
101 ptr[0] = endian_16lo8 (word);
102 ptr[1] = endian_16hi8 (word);
106inline void endian_16 (
char ptr[2], uint_least16_t word)
108 endian_16 ((uint8_t *) ptr, word);
112inline uint_least16_t endian_little16 (
const uint8_t ptr[2])
114 return endian_16 (ptr[1], ptr[0]);
118inline void endian_little16 (uint8_t ptr[2], uint_least16_t word)
120 ptr[0] = endian_16lo8 (word);
121 ptr[1] = endian_16hi8 (word);
125inline uint_least16_t endian_big16 (
const uint8_t ptr[2])
127 return endian_16 (ptr[0], ptr[1]);
131inline void endian_big16 (uint8_t ptr[2], uint_least16_t word)
133 ptr[0] = endian_16hi8 (word);
134 ptr[1] = endian_16lo8 (word);
142inline void endian_32lo16 (uint_least32_t &dword, uint_least16_t word)
144 dword &= (uint_least32_t) 0xffff0000;
149inline uint_least16_t endian_32lo16 (uint_least32_t dword)
151 return (uint_least16_t) dword & 0xffff;
155inline void endian_32hi16 (uint_least32_t &dword, uint_least16_t word)
157 dword &= (uint_least32_t) 0x0000ffff;
158 dword |= (uint_least32_t) word << 16;
162inline uint_least16_t endian_32hi16 (uint_least32_t dword)
164 return (uint_least16_t) (dword >> 16);
168inline void endian_32lo8 (uint_least32_t &dword, uint8_t
byte)
170 dword &= (uint_least32_t) 0xffffff00;
171 dword |= (uint_least32_t)
byte;
175inline uint8_t endian_32lo8 (uint_least32_t dword)
177 return (uint8_t) dword;
181inline void endian_32hi8 (uint_least32_t &dword, uint8_t
byte)
183 dword &= (uint_least32_t) 0xffff00ff;
184 dword |= (uint_least32_t)
byte << 8;
188inline uint8_t endian_32hi8 (uint_least32_t dword)
190 return (uint8_t) (dword >> 8);
194inline void endian_32swap16 (uint_least32_t &dword)
196 uint_least16_t lo = endian_32lo16 (dword);
197 uint_least16_t hi = endian_32hi16 (dword);
198 endian_32lo16 (dword, hi);
199 endian_32hi16 (dword, lo);
203inline void endian_32swap8 (uint_least32_t &dword)
205 uint_least16_t lo = 0, hi = 0;
206 lo = endian_32lo16 (dword);
207 hi = endian_32hi16 (dword);
210 endian_32lo16 (dword, hi);
211 endian_32hi16 (dword, lo);
215inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo)
217 uint_least32_t dword = 0;
218 uint_least16_t word = 0;
219 endian_32lo8 (dword, lo);
220 endian_32hi8 (dword, hi);
221 endian_16lo8 (word, hilo);
222 endian_16hi8 (word, hihi);
223 endian_32hi16 (dword, word);
228inline uint_least32_t endian_little32 (
const uint8_t ptr[4])
230 return endian_32 (ptr[3], ptr[2], ptr[1], ptr[0]);
234inline void endian_little32 (uint8_t ptr[4], uint_least32_t dword)
236 uint_least16_t word = 0;
237 ptr[0] = endian_32lo8 (dword);
238 ptr[1] = endian_32hi8 (dword);
239 word = endian_32hi16 (dword);
240 ptr[2] = endian_16lo8 (word);
241 ptr[3] = endian_16hi8 (word);
245inline uint_least32_t endian_big32 (
const uint8_t ptr[4])
247 return endian_32 (ptr[0], ptr[1], ptr[2], ptr[3]);
251inline void endian_big32 (uint8_t ptr[4], uint_least32_t dword)
253 uint_least16_t word = 0;
254 word = endian_32hi16 (dword);
255 ptr[1] = endian_16lo8 (word);
256 ptr[0] = endian_16hi8 (word);
257 ptr[2] = endian_32hi8 (dword);
258 ptr[3] = endian_32lo8 (dword);