vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Thu Aug 18 22:17:12 2011 +0300| [67fc58a5e7b4ee34c72138d703c815e25dd7ce2f] | committer: Rémi Denis-Courmont
bswap64: hack for C++ brain damage Contrary to C, C++ compilers don't promote larger constants up to unsigned long long when needed. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=67fc58a5e7b4ee34c72138d703c815e25dd7ce2f --- include/vlc_common.h | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/include/vlc_common.h b/include/vlc_common.h index 9e49c35..1da9ea9 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -657,7 +657,7 @@ static inline uint64_t bswap64 (uint64_t x) { #if VLC_GCC_VERSION(4,3) return __builtin_bswap64 (x); -#else +#elif !defined (__cplusplus) return ((x & 0x00000000000000FF) << 56) | ((x & 0x000000000000FF00) << 40) | ((x & 0x0000000000FF0000) << 24) @@ -666,6 +666,15 @@ static inline uint64_t bswap64 (uint64_t x) | ((x & 0x0000FF0000000000) >> 24) | ((x & 0x00FF000000000000) >> 40) | ((x & 0xFF00000000000000) >> 56); +#else + return ((x & 0x00000000000000FFLLU) << 56) + | ((x & 0x000000000000FF00LLU) << 40) + | ((x & 0x0000000000FF0000LLU) << 24) + | ((x & 0x00000000FF000000LLU) << 8) + | ((x & 0x000000FF00000000LLU) >> 8) + | ((x & 0x0000FF0000000000LLU) >> 24) + | ((x & 0x00FF000000000000LLU) >> 40) + | ((x & 0xFF00000000000000LLU) >> 56); #endif } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
