Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/platform

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/tools/platform (Version 11.3.0) and /externals/g4tools/include/tools/platform (Version 11.1.1)


  1 // Copyright (C) 2010, Guy Barrand. All rights      1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.            2 // See the file tools.license for terms.
  3                                                     3 
  4 #ifndef tools_platform                              4 #ifndef tools_platform
  5 #define tools_platform                              5 #define tools_platform
  6                                                     6 
  7 // We do not byteswap on intel (LE) (common pl      7 // We do not byteswap on intel (LE) (common platform).
  8 // We have then a better compression on these       8 // We have then a better compression on these machines.
  9 // NOTE : this is the contrary to what is done      9 // NOTE : this is the contrary to what is done in CERN-ROOT (and Rio).
 10                                                    10 
 11 namespace tools {                                  11 namespace tools {
 12                                                    12 
 13 inline bool is_little_endian() {                   13 inline bool is_little_endian() {
 14   unsigned int i = 1;                              14   unsigned int i = 1;
 15   unsigned char* b = (unsigned char*)&i;           15   unsigned char* b = (unsigned char*)&i;
 16   // BE = Big Endian, LE = Little Endian.          16   // BE = Big Endian, LE = Little Endian.
 17   // The Intels x86 are LE.                        17   // The Intels x86 are LE.
 18   // Mac PPC b[3] is 1 (BE)                        18   // Mac PPC b[3] is 1 (BE)
 19   // Mac Intel b[0] is 1 (LE)                      19   // Mac Intel b[0] is 1 (LE)
 20   // Linux i386 b[0] is 1 (LE)                     20   // Linux i386 b[0] is 1 (LE)
 21   // Linux x86_64 b[0] is 1 (LE)                   21   // Linux x86_64 b[0] is 1 (LE)
 22   return (b[0]==1?true:false);                     22   return (b[0]==1?true:false);
 23 }                                                  23 }
 24                                                    24 
 25 }                                                  25 }
 26                                                    26 
 27 #if defined(__APPLE__)                             27 #if defined(__APPLE__)
 28 #include <TargetConditionals.h>                    28 #include <TargetConditionals.h>
 29 #endif                                             29 #endif
 30                                                    30 
 31 namespace tools {                                  31 namespace tools {
 32 namespace device {                                 32 namespace device {
 33                                                    33 
 34 #if TARGET_OS_IPHONE                               34 #if TARGET_OS_IPHONE
 35 inline bool is_iOS() {return true;}                35 inline bool is_iOS() {return true;}
 36 #else                                              36 #else
 37 inline bool is_iOS() {return false;}               37 inline bool is_iOS() {return false;}
 38 #endif                                             38 #endif
 39                                                    39 
 40 #ifdef ANDROID                                     40 #ifdef ANDROID
 41 inline bool is_Android() {return true;}            41 inline bool is_Android() {return true;}
 42 #else                                              42 #else
 43 inline bool is_Android() {return false;}           43 inline bool is_Android() {return false;}
 44 #endif                                             44 #endif
 45                                                    45 
 46 #ifdef EMSCRIPTEN                                  46 #ifdef EMSCRIPTEN
 47 inline bool is_emscripten() {return true;}         47 inline bool is_emscripten() {return true;}
 48 #else                                              48 #else
 49 inline bool is_emscripten() {return false;}        49 inline bool is_emscripten() {return false;}
 50 #endif                                             50 #endif
 51                                                    51 
 52                                                    52 
 53 #if defined(ANDROID) || TARGET_OS_IPHONE           53 #if defined(ANDROID) || TARGET_OS_IPHONE
 54 inline bool small_screen()     {return true;}      54 inline bool small_screen()     {return true;}
 55 //inline bool no_cursor()        {return true;     55 //inline bool no_cursor()        {return true;}
 56 inline bool stop_app_button()  {return true;}      56 inline bool stop_app_button()  {return true;} //the device has a button to stop the app.
 57 #elif defined(EMSCRIPTEN)                          57 #elif defined(EMSCRIPTEN)
 58 inline bool small_screen()     {return false;}     58 inline bool small_screen()     {return false;}
 59 //inline bool no_cursor()        {return false     59 //inline bool no_cursor()        {return false;}
 60 inline bool stop_app_button()  {return true;}      60 inline bool stop_app_button()  {return true;} //the device has a button to stop the app.
 61 #else                                              61 #else
 62 inline bool small_screen()     {return false;}     62 inline bool small_screen()     {return false;}
 63 //inline bool no_cursor()        {return false     63 //inline bool no_cursor()        {return false;}
 64 inline bool stop_app_button()  {return false;}     64 inline bool stop_app_button()  {return false;}
 65 #endif                                             65 #endif
 66 #if TARGET_OS_IPHONE                               66 #if TARGET_OS_IPHONE
 67 inline bool slow_cpu()         {return true;}      67 inline bool slow_cpu()         {return true;}
 68 #else                                              68 #else
 69 inline bool slow_cpu()         {return false;}     69 inline bool slow_cpu()         {return false;}
 70 #endif                                             70 #endif
 71                                                    71 
 72 inline unsigned int tex_mem_limit() {              72 inline unsigned int tex_mem_limit() {
 73   // glGet(GL_MAX_TEXTURE_SIZE) :                  73   // glGet(GL_MAX_TEXTURE_SIZE) :
 74   //   MacBookPro : it returns 8192.               74   //   MacBookPro : it returns 8192.
 75   //   SGS : it returns 2048.                      75   //   SGS : it returns 2048.
 76   //   iPad1 : it returns 2048.                    76   //   iPad1 : it returns 2048.
 77   //   iPod : it returns ?                         77   //   iPod : it returns ?
 78   //   Nexus 10 : it returns ?                     78   //   Nexus 10 : it returns ?
 79                                                    79 
 80   // 1024*1024  //*3 =   3 145 728                 80   // 1024*1024  //*3 =   3 145 728
 81   // 2048*2048  //*3 =  12 582 912                 81   // 2048*2048  //*3 =  12 582 912
 82   // 4096*4096  //*3 =  50 331 648                 82   // 4096*4096  //*3 =  50 331 648
 83   // 8192*8192  //*3 = 201 326 592                 83   // 8192*8192  //*3 = 201 326 592
 84   // 8192*4096  //*3 = 100 663 296                 84   // 8192*4096  //*3 = 100 663 296
 85   if(small_screen()) {                             85   if(small_screen()) {
 86     //iOS : Apple says that max 2D tex size is     86     //iOS : Apple says that max 2D tex size is 1024*1024 with two units
 87     //      texture available. From doc on Pow     87     //      texture available. From doc on PowerVR MBX.
 88     return 2048*2048*3;                            88     return 2048*2048*3;
 89   } else {                                         89   } else {
 90     //limit = 4096*4096*3; //=8192*2048 //perm     90     //limit = 4096*4096*3; //=8192*2048 //permit to pass ATLAS big image.
 91     //permit to pass fete_science_2010/power2/     91     //permit to pass fete_science_2010/power2/image_0.jpg
 92     return 8192*4096*3; //100663296                92     return 8192*4096*3; //100663296
 93   }                                                93   }
 94 }                                                  94 }
 95                                                    95 
 96 }}                                                 96 }}
 97                                                    97 
 98 //////////////////////////////////////////////     98 ///////////////////////////////////////////////////////////////////
 99 /// backcomp : for OnX/source/Core/atat.cxx :      99 /// backcomp : for OnX/source/Core/atat.cxx : /////////////////////
100 //////////////////////////////////////////////    100 ///////////////////////////////////////////////////////////////////
101                                                   101 
102 //NOTE : we avoid to have std includes here to    102 //NOTE : we avoid to have std includes here to be sure
103 //       that in the below ifdef things come o    103 //       that in the below ifdef things come only from the compiler.
104                                                   104 
105 namespace tools {                                 105 namespace tools {
106                                                   106 
107 inline const char* os() {                         107 inline const char* os() {
108                                                   108 
109 #if TARGET_OS_IPHONE                              109 #if TARGET_OS_IPHONE
110   static const char s_s[] = "iOS";                110   static const char s_s[] = "iOS";
111 #elif defined(ANDROID)                            111 #elif defined(ANDROID)
112   static const char s_s[] = "Android";            112   static const char s_s[] = "Android";
113 #elif defined(EMSCRIPTEN)                         113 #elif defined(EMSCRIPTEN)
114   static const char s_s[] = "emscripten";         114   static const char s_s[] = "emscripten";
115 #elif defined(_WIN32)                             115 #elif defined(_WIN32)
116   static const char s_s[] = "Windows_NT";         116   static const char s_s[] = "Windows_NT";
117 #elif __APPLE__                                   117 #elif __APPLE__
118   static const char s_s[] = "Darwin";             118   static const char s_s[] = "Darwin";
119 #elif defined(__linux)                            119 #elif defined(__linux)
120   static const char s_s[] = "Linux";              120   static const char s_s[] = "Linux";
121 #elif defined(__alpha)                            121 #elif defined(__alpha)
122   static const char s_s[] = "OSF1";               122   static const char s_s[] = "OSF1";
123 #elif defined(__CYGWIN__)                         123 #elif defined(__CYGWIN__)
124   static const char s_s[] = "CYGWIN";             124   static const char s_s[] = "CYGWIN";
125 #else                                             125 #else
126   static const char s_s[] = "unknown";            126   static const char s_s[] = "unknown";
127 #endif                                            127 #endif
128   return s_s;                                     128   return s_s;
129 }                                                 129 }
130                                                   130 
131 inline bool _WIN32_defined() {                    131 inline bool _WIN32_defined() {
132 #ifdef _WIN32                                     132 #ifdef _WIN32
133   return true;                                    133   return true;
134 #else                                             134 #else
135   return false;                                   135   return false;
136 #endif                                            136 #endif
137 }                                                 137 }
138                                                   138 
139 inline const char* processor() {                  139 inline const char* processor() {
140                                                   140 
141 #if defined(__GNUC__)                             141 #if defined(__GNUC__)
142                                                   142 
143 #if defined(__ppc__)                              143 #if defined(__ppc__)
144   static const char s_s[] = "ppc";                144   static const char s_s[] = "ppc";
145 #elif defined(__ppc64__)                          145 #elif defined(__ppc64__)
146   static const char s_s[] = "ppc64";              146   static const char s_s[] = "ppc64";
147 #elif defined(__i386__)                           147 #elif defined(__i386__)
148   static const char s_s[] = "i386";               148   static const char s_s[] = "i386";
149 #elif defined(__x86_64__)                         149 #elif defined(__x86_64__)
150   static const char s_s[] = "x86_64";             150   static const char s_s[] = "x86_64";
151 #elif defined(__ia64__)                           151 #elif defined(__ia64__)
152   static const char s_s[] = "ia64";               152   static const char s_s[] = "ia64";
153 #else                                             153 #else
154   static const char s_s[] = "unknown";            154   static const char s_s[] = "unknown";
155 #endif                                            155 #endif
156                                                   156 
157 #elif defined(_MSC_VER)                           157 #elif defined(_MSC_VER)
158                                                   158 
159 #if defined(_M_IX86)                              159 #if defined(_M_IX86)
160   static const char s_s[] = "ix86";               160   static const char s_s[] = "ix86";
161 #elif defined(_M_X64)                             161 #elif defined(_M_X64)
162   static const char s_s[] = "x64";                162   static const char s_s[] = "x64";
163 #else                                             163 #else
164   static const char s_s[] = "unknown";            164   static const char s_s[] = "unknown";
165 #endif                                            165 #endif
166                                                   166 
167 #elif defined(__alpha)                            167 #elif defined(__alpha)
168   static const char s_s[] = "alpha";              168   static const char s_s[] = "alpha";
169                                                   169 
170 #else                                             170 #else
171   static const char s_s[] = "unknown";            171   static const char s_s[] = "unknown";
172 #endif                                            172 #endif
173   return s_s;                                     173   return s_s;
174 }                                                 174 }
175                                                   175 
176 inline const char* compiler_name() {              176 inline const char* compiler_name() {
177                                                   177 
178 #if defined(__clang__)                            178 #if defined(__clang__)
179   static const char s_s[] = "clang";              179   static const char s_s[] = "clang";
180 #elif defined(__GNUC__)                           180 #elif defined(__GNUC__)
181   static const char s_s[] = "gcc";                181   static const char s_s[] = "gcc";
182 #elif defined(_MSC_VER)                           182 #elif defined(_MSC_VER)
183   static const char s_s[] = "cl";                 183   static const char s_s[] = "cl";
184 #elif defined(__alpha)                            184 #elif defined(__alpha)
185   static const char s_s[] = "cxx";                185   static const char s_s[] = "cxx";
186 #else                                             186 #else
187   static const char s_s[] = "unknown";            187   static const char s_s[] = "unknown";
188 #endif                                            188 #endif
189   return s_s;                                     189   return s_s;
190 }                                                 190 }
191                                                   191 
192 }                                                 192 }
193                                                   193 
194 #include "tosu" //does not bring any std inclu    194 #include "tosu" //does not bring any std include.
195                                                   195 
196 namespace tools {                                 196 namespace tools {
197                                                   197 
198 inline void compiler(char a_s[128]) {             198 inline void compiler(char a_s[128]) {
199   char* pos = a_s;                                199   char* pos = a_s;
200   unsigned int l;                                 200   unsigned int l;
201   toss(compiler_name(),pos,l);pos += l;           201   toss(compiler_name(),pos,l);pos += l;
202                                                   202 
203 #if defined(__clang__)                            203 #if defined(__clang__)
204   *pos = '_';pos++;                               204   *pos = '_';pos++;
205   tosu<unsigned int>(__clang_major__,pos,l);po    205   tosu<unsigned int>(__clang_major__,pos,l);pos += l;
206   tosu<unsigned int>(__clang_minor__,pos,l);po    206   tosu<unsigned int>(__clang_minor__,pos,l);pos += l;
207   tosu<unsigned int>(__clang_patchlevel__,pos,    207   tosu<unsigned int>(__clang_patchlevel__,pos,l);pos += l;
208 #elif defined(__GNUC__)                           208 #elif defined(__GNUC__)
209   *pos = '_';pos++;                               209   *pos = '_';pos++;
210   tosu<unsigned int>(__GNUC__,pos,l);pos += l;    210   tosu<unsigned int>(__GNUC__,pos,l);pos += l;
211   tosu<unsigned int>(__GNUC_MINOR__,pos,l);pos    211   tosu<unsigned int>(__GNUC_MINOR__,pos,l);pos += l;
212   tosu<unsigned int>(__GNUC_PATCHLEVEL__,pos,l    212   tosu<unsigned int>(__GNUC_PATCHLEVEL__,pos,l);pos += l;
213 #elif defined(_MSC_VER)                           213 #elif defined(_MSC_VER)
214   *pos = '_';pos++;                               214   *pos = '_';pos++;
215   tosu<unsigned int>(_MSC_VER,pos,l);pos += l;    215   tosu<unsigned int>(_MSC_VER,pos,l);pos += l;
216   //_mfc_                                         216   //_mfc_
217   //tosu<unsigned int>(_MFC_VER,pos,l);pos +=     217   //tosu<unsigned int>(_MFC_VER,pos,l);pos += l;
218 #elif defined(__alpha)                            218 #elif defined(__alpha)
219 #else                                             219 #else
220 #endif                                            220 #endif
221   *pos = 0;                                       221   *pos = 0;
222 }                                                 222 }
223                                                   223 
224 }                                                 224 }
225                                                   225 
226 #endif                                            226 #endif
227                                                   227 
228                                                   228 
229 /* We prefer to handle endianity dynamically,     229 /* We prefer to handle endianity dynamically, but with cpp macro
230    it would looks like (from luaconf.h) :         230    it would looks like (from luaconf.h) :
231 #if defined(__i386__) || defined(__i386) || \     231 #if defined(__i386__) || defined(__i386) || \
232     defined(__X86__)  || defined (__x86_64)       232     defined(__X86__)  || defined (__x86_64)
233 #define TOOLS_IS_BE 0                             233 #define TOOLS_IS_BE 0
234 #define TOOLS_IS_LE 1                             234 #define TOOLS_IS_LE 1
235 #elif defined(__POWERPC__) || defined(__ppc__)    235 #elif defined(__POWERPC__) || defined(__ppc__)
236 #define TOOLS_IS_BE 1                             236 #define TOOLS_IS_BE 1
237 #define TOOLS_IS_LE 0                             237 #define TOOLS_IS_LE 0
238 #endif                                            238 #endif
239 */                                                239 */