9 #ifndef __AFW_ENDIAN_H__
10 #define __AFW_ENDIAN_H__
29 #define AFW_ENDIAN_IS_BIG APR_IS_BIGENDIAN
31 #define AFW_ENDIAN_SWAP(_X_, _Y_) \
37 #define AFW_ENDIAN_SWITCH_64(_N_) \
38 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[0], ((unsigned char *)(_N_))[7]); \
39 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[1], ((unsigned char *)(_N_))[6]); \
40 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[2], ((unsigned char *)(_N_))[5]); \
41 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[3], ((unsigned char *)(_N_))[4]); \
44 #define AFW_ENDIAN_SWITCH_32(_N_) \
45 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[0], ((unsigned char *)(_N_))[3]); \
46 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[1], ((unsigned char *)(_N_))[2]); \
49 #define AFW_ENDIAN_SWITCH_16(_N_) \
50 AFW_ENDIAN_SWAP(((unsigned char *)(_N_))[0], ((unsigned char *)(_N_))[1]); \
55 #define AFW_ENDIAN_IS_LITTLE 0
56 #define AFW_ENDIAN_NATIVE_TO_LITTLE_64(_N_) AFW_ENDIAN_SWITCH_64(_N_)
57 #define AFW_ENDIAN_LITTLE_TO_NATIVE_64(_N_) AFW_ENDIAN_SWITCH_64(_N_)
58 #define AFW_ENDIAN_NATIVE_TO_LITTLE_32(_N_) AFW_ENDIAN_SWITCH_32(_N_)
59 #define AFW_ENDIAN_LITTLE_TO_NATIVE_32(_N_) AFW_ENDIAN_SWITCH_32(_N_)
60 #define AFW_ENDIAN_NATIVE_TO_LITTLE_16(_N_) AFW_ENDIAN_SWITCH_16(_N_)
61 #define AFW_ENDIAN_LITTLE_TO_NATIVE_16(_N_) AFW_ENDIAN_SWITCH_16(_N_)
62 #define AFW_ENDIAN_NATIVE_TO_BIG_64(_N_)
63 #define AFW_ENDIAN_BIG_TO_NATIVE_64(_N_)
64 #define AFW_ENDIAN_NATIVE_TO_BIG_32(_N_)
65 #define AFW_ENDIAN_BIG_TO_NATIVE_32(_N_)
66 #define AFW_ENDIAN_NATIVE_TO_BIG_16(_N_)
67 #define AFW_ENDIAN_BIG_TO_NATIVE_16(_N_)
69 #define AFW_ENDIAN_IS_LITTLE 1
70 #define AFW_ENDIAN_NATIVE_TO_LITTLE_64(_N_)
71 #define AFW_ENDIAN_LITTLE_TO_NATIVE_64(_N_)
72 #define AFW_ENDIAN_NATIVE_TO_LITTLE_32(_N_)
73 #define AFW_ENDIAN_LITTLE_TO_NATIVE_32(_N_)
74 #define AFW_ENDIAN_NATIVE_TO_LITTLE_16(_N_)
75 #define AFW_ENDIAN_LITTLE_TO_NATIVE_16(_N_)
76 #define AFW_ENDIAN_NATIVE_TO_BIG_64(_N_) AFW_ENDIAN_SWITCH_64(_N_)
77 #define AFW_ENDIAN_BIG_TO_NATIVE_64(_N_) AFW_ENDIAN_SWITCH_64(_N_)
78 #define AFW_ENDIAN_NATIVE_TO_BIG_32(_N_) AFW_ENDIAN_SWITCH_32(_N_)
79 #define AFW_ENDIAN_BIG_TO_NATIVE_32(_N_) AFW_ENDIAN_SWITCH_32(_N_)
80 #define AFW_ENDIAN_NATIVE_TO_BIG_16(_N_) AFW_ENDIAN_SWITCH_16(_N_)
81 #define AFW_ENDIAN_BIG_TO_NATIVE_16(_N_) AFW_ENDIAN_SWITCH_16(_N_)
84 #define AFW_ENDIAN_NATIVE_TO_BIG(_N_, _BITS_) AFW_ENDIAN_NATIVE_TO_BIG_ ## _BITS_(_N_)
85 #define AFW_ENDIAN_BIG_TO_NATIVE(_N_, _BITS_) AFW_ENDIAN_BIG_TO_NATIVE_ ## _BITS_(_N_)
87 #define AFW_ENDIAN_INCREMENT_BIG_64(_N_) \
88 AFW_ENDIAN_BIG_TO_NATIVE_64(_N_); \
90 AFW_ENDIAN_NATIVE_TO_BIG_64(_N_)
92 #define AFW_ENDIAN_INCREMENT_BIG_32(_N_) \
93 AFW_ENDIAN_BIG_TO_NATIVE_32(_N_); \
95 AFW_ENDIAN_NATIVE_TO_BIG_32(_N_)
97 #define AFW_ENDIAN_INCREMENT_BIG_16(_N_) \
98 AFW_ENDIAN_BIG_TO_NATIVE_16(_N_); \
100 AFW_ENDIAN_NATIVE_TO_BIG_16(_N_)
189 AFW_ENDIAN_BIG_TO_NATIVE_64(&result);
192 "Value in afw_endian_big_uint64_t exceeds the value that will "
210 AFW_ENDIAN_BIG_TO_NATIVE_64(&result);
224 AFW_ENDIAN_BIG_TO_NATIVE_64(&result);
239 AFW_ENDIAN_NATIVE_TO_BIG_64(&result);
254 AFW_ENDIAN_NATIVE_TO_BIG_64(&result);
268 AFW_ENDIAN_BIG_TO_NATIVE_32(&result);
282 AFW_ENDIAN_BIG_TO_NATIVE_32(&result);
297 AFW_ENDIAN_NATIVE_TO_BIG_32(&result);
312 AFW_ENDIAN_NATIVE_TO_BIG_32(&result);
326 AFW_ENDIAN_BIG_TO_NATIVE_16(&result);
340 AFW_ENDIAN_BIG_TO_NATIVE_16(&result);
355 AFW_ENDIAN_NATIVE_TO_BIG_16(&result);
370 AFW_ENDIAN_NATIVE_TO_BIG_16(&result);
389 AFW_ENDIAN_LITTLE_TO_NATIVE_64(&result);
392 "Value in afw_endian_little_uint64_t exceeds the value that will "
410 AFW_ENDIAN_LITTLE_TO_NATIVE_64(&result);
424 AFW_ENDIAN_LITTLE_TO_NATIVE_64(&result);
439 AFW_ENDIAN_NATIVE_TO_LITTLE_64(&result);
454 AFW_ENDIAN_NATIVE_TO_LITTLE_64(&result);
468 AFW_ENDIAN_LITTLE_TO_NATIVE_32(&result);
482 AFW_ENDIAN_LITTLE_TO_NATIVE_32(&result);
497 AFW_ENDIAN_NATIVE_TO_LITTLE_32(&result);
512 AFW_ENDIAN_NATIVE_TO_LITTLE_32(&result);
526 AFW_ENDIAN_LITTLE_TO_NATIVE_16(&result);
540 AFW_ENDIAN_LITTLE_TO_NATIVE_16(&result);
555 AFW_ENDIAN_NATIVE_TO_LITTLE_16(&result);
570 AFW_ENDIAN_NATIVE_TO_LITTLE_16(&result);
Adaptive Framework Common Header.
#define AFW_BEGIN_DECLARES
apr_uint64_t afw_uint64_t
64-bit unsigned integer.
apr_uint16_t afw_uint16_t
16-bit unsigned integer.
apr_int32_t afw_int32_t
32-bit signed integer.
apr_int16_t afw_int16_t
16-bit signed integer.
apr_int64_t afw_int64_t
64-bit signed integer.
apr_uint32_t afw_uint32_t
32-bit unsigned integer.
apr_size_t afw_size_t
size_t.
afw_uint64_t afw_endian_big_to_native_uint64(afw_endian_big_uint64_t big)
afw_endian_big_uint64_t to native afw_uint64_t
afw_endian_little_uint32_t afw_endian_native_to_little_uint32(afw_uint32_t native)
native afw_uint32_t to afw_endian_little_uint32_t
afw_size_t afw_endian_safe_big_uint64_to_native_size_t(afw_endian_big_uint64_t big, afw_xctx_t *xctx)
Safe afw_endian_big_uint64_t to native afw_size_t.
afw_int32_t afw_endian_big_to_native_int32(afw_endian_big_int32_t big)
afw_endian_big_int32_t to native afw_int32_t
afw_endian_big_uint64_t afw_endian_native_to_big_uint64(afw_uint64_t native)
native afw_uint64_t to afw_endian_big_uint64_t
afw_int16_t afw_endian_big_to_native_int16(afw_endian_big_int16_t big)
afw_endian_big_int16_t to native afw_int16_t
afw_endian_little_int16_t afw_endian_native_to_little_int16(afw_int16_t native)
native afw_int16_t to afw_endian_little_int16_t
afw_uint32_t afw_endian_big_to_native_uint32(afw_endian_big_uint32_t big)
afw_endian_big_uint32_t to native afw_uint32_t
afw_endian_big_int64_t afw_endian_native_to_big_int64(afw_int64_t native)
native afw_int64_t to afw_endian_big_int64_t
afw_endian_little_uint64_t afw_endian_native_to_little_uint64(afw_uint64_t native)
native afw_uint64_t to afw_endian_little_uint64_t
afw_int64_t afw_endian_little_to_native_int64(afw_endian_little_int64_t little)
afw_endian_little_int64_t to native afw_int64_t
afw_int32_t afw_endian_little_to_native_int32(afw_endian_little_int32_t little)
afw_endian_little_int32_t to native afw_int32_t
afw_uint16_t afw_endian_big_to_native_uint16(afw_endian_big_uint16_t big)
afw_endian_big_uint16_t to native afw_uint16_t
afw_endian_big_int32_t afw_endian_native_to_big_int32(afw_int32_t native)
native afw_int32_t to afw_endian_big_int32_t
afw_endian_little_uint16_t afw_endian_native_to_little_uint16(afw_uint16_t native)
native afw_uint16_t to afw_endian_little_uint16_t
afw_endian_little_int64_t afw_endian_native_to_little_int64(afw_int64_t native)
native afw_int64_t to afw_endian_little_int64_t
afw_int64_t afw_endian_big_to_native_int64(afw_endian_big_int64_t big)
afw_endian_big_int64_t to native afw_int64_t
afw_endian_big_int16_t afw_endian_native_to_big_int16(afw_int16_t native)
native afw_int16_t to afw_endian_big_int16_t
afw_endian_little_int32_t afw_endian_native_to_little_int32(afw_int32_t native)
native afw_int32_t to afw_endian_little_int32_t
afw_uint64_t afw_endian_little_to_native_uint64(afw_endian_little_uint64_t little)
afw_endian_little_uint64_t to native afw_uint64_t
afw_int16_t afw_endian_little_to_native_int16(afw_endian_little_int16_t little)
afw_endian_little_int16_t to native afw_int16_t
afw_size_t afw_endian_safe_little_uint64_to_native_size_t(afw_endian_little_uint64_t little, afw_xctx_t *xctx)
Safe afw_endian_little_uint64_t to native afw_size_t.
afw_uint32_t afw_endian_little_to_native_uint32(afw_endian_little_uint32_t little)
afw_endian_little_uint32_t to native afw_uint32_t
afw_endian_big_uint32_t afw_endian_native_to_big_uint32(afw_uint32_t native)
native afw_uint32_t to afw_endian_big_uint32_t
afw_endian_big_uint16_t afw_endian_native_to_big_uint16(afw_uint16_t native)
native afw_uint16_t to afw_endian_big_uint16_t
afw_uint16_t afw_endian_little_to_native_uint16(afw_endian_little_uint16_t little)
afw_endian_little_uint16_t to native afw_uint16_t
#define AFW_THROW_ERROR_Z(code, message_z, xctx)
Macro used to set error and 0 rv in xctx and throw it.
Interface afw_xctx public struct.
16-bit signed big endian integer.
32-bit signed big endian integer.
64-bit signed big endian integer.
16-bit unsigned big endian integer.
32-bit unsigned big endian integer.
64-bit unsigned big endian integer.
16-bit signed little endian integer.
32-bit signed little endian integer.
64-bit signed little endian integer.
16-bit unsigned little endian integer.
32-bit unsigned little endian integer.
64-bit unsigned little endian integer.