--- rxvt-unicode/src/rxvtutil.h 2009/09/04 15:40:13 1.39 +++ rxvt-unicode/src/rxvtutil.h 2011/01/03 18:52:41 1.44 @@ -3,9 +3,12 @@ #include #include +#include using namespace std; +#define ARRAY_LENGTH(v) (sizeof (v) / sizeof ((v)[0])) + #define PP_CONCAT_(a, b) a ## b #define PP_CONCAT(a, b) PP_CONCAT_(a, b) #define PP_STRINGIFY_(a) #a @@ -22,7 +25,7 @@ #endif // put into ifs if you are very sure that the expression -// is mostly true or mosty false. note that these return +// is mostly true or mostly false. note that these return // booleans, not the expression. #define expect_false(expr) expect ((expr) != 0, 0) #define expect_true(expr) expect ((expr) != 0, 1) @@ -40,16 +43,18 @@ # define THROW(x) throw x #endif -extern class byteorder { - static unsigned int e; // at least 32 bits -public: - byteorder (); - - static bool big_endian () { return e == 0x11223344; }; - static bool network () { return e == 0x11223344; }; - static bool little_endian () { return e == 0x44332211; }; - static bool vax () { return e == 0x44332211; }; -} byteorder; +namespace byteorder { + static unsigned char e () + { + const uint32_t u = 0x11223344; + return *(unsigned char *)&u; + } + + static bool big_endian () { return e () == 0x11; }; + static bool network () { return big_endian (); }; + static bool little_endian () { return e () == 0x44; }; + static bool vax () { return little_endian (); }; +}; // various utility functions template static inline T min (T a, U b) { return a < (T)b ? a : (T)b; }