… | |
… | |
128 | } |
128 | } |
129 | |
129 | |
130 | ECB_HEADER_INLINE ecb_bool ecb_big_endian () ecb_const { return ecb_byteorder_helper () == 0x11; }; |
130 | ECB_HEADER_INLINE ecb_bool ecb_big_endian () ecb_const { return ecb_byteorder_helper () == 0x11; }; |
131 | ECB_HEADER_INLINE ecb_bool ecb_little_endian () ecb_const { return ecb_byteorder_helper () == 0x44; }; |
131 | ECB_HEADER_INLINE ecb_bool ecb_little_endian () ecb_const { return ecb_byteorder_helper () == 0x44; }; |
132 | |
132 | |
|
|
133 | #if ecb_cplusplus_does_not_suck |
|
|
134 | // does not work for local types (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm) |
|
|
135 | template<typename T, int N> |
|
|
136 | static inline int array_length (const T (&arr)[N]) |
|
|
137 | { |
|
|
138 | return N; |
|
|
139 | } |
|
|
140 | #else |
|
|
141 | #define ecb_array_length(name) (sizeof (name) / sizeof (name [0])) |
133 | #endif |
142 | #endif |
134 | |
143 | |
|
|
144 | #endif |
|
|
145 | |