// Copyright (C) 2010, Guy Barrand. All rights reserved. // See the file tools.license for terms. #ifndef tools_platform #define tools_platform // We do not byteswap on intel (LE) (common platform). // We have then a better compression on these machines. // NOTE : this is the contrary to what is done in ROOT (and Rio). namespace tools { inline bool is_little_endian() { unsigned int i = 1; unsigned char* b = (unsigned char*)&i; // BE = Big Endian, LE = Little Endian. // The Intels x86 are LE. // Mac PPC b[3] is 1 (BE) // Mac Intel b[0] is 1 (LE) // Linux i386 b[0] is 1 (LE) // Linux x86_64 b[0] is 1 (LE) return (b[0]==1?true:false); } } #if defined(__APPLE__) #include #endif namespace tools { namespace device { #if TARGET_OS_IPHONE inline bool is_iOS() {return true;} #else inline bool is_iOS() {return false;} #endif #if ANDROID_NDK inline bool is_Android() {return true;} #else inline bool is_Android() {return false;} #endif #if ANDROID_NDK || TARGET_OS_IPHONE inline bool small_screen() {return true;} inline bool no_cursor() {return true;} inline bool stop_app_button() {return true;} #else inline bool small_screen() {return false;} inline bool no_cursor() {return false;} inline bool stop_app_button() {return false;} #endif #if TARGET_OS_IPHONE inline bool slow_cpu() {return true;} #else inline bool slow_cpu() {return false;} #endif }} #endif /* We prefer to handle endianity dynamically, but with cpp macro it would looks like (from luaconf.h) : #if defined(__i386__) || defined(__i386) || \ defined(__X86__) || defined (__x86_64) #define TOOLS_IS_BE 0 #define TOOLS_IS_LE 1 #elif defined(__POWERPC__) || defined(__ppc__) #define TOOLS_IS_BE 1 #define TOOLS_IS_LE 0 #endif */