Geant4 Cross Reference |
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_tosu 4 #ifndef tools_tosu 5 #define tools_tosu 5 #define tools_tosu 6 6 7 // have a "sprintf(%u)" without #include. 7 // have a "sprintf(%u)" without #include. 8 // It is used in platform. 8 // It is used in platform. 9 9 10 namespace tools { 10 namespace tools { 11 11 12 inline void toss(const char* a_from,char a_s[] 12 inline void toss(const char* a_from,char a_s[],unsigned int& a_l) { 13 char* _s = (char*)a_from; << 13 char* s = (char*)a_from; 14 a_l = 0; 14 a_l = 0; 15 char* pos = a_s; 15 char* pos = a_s; 16 while(*_s) { << 16 while(*s) { 17 *pos = *_s;pos++; << 17 *pos = *s;pos++; 18 a_l++; 18 a_l++; 19 _s++; << 19 s++; 20 } 20 } 21 *pos = 0; 21 *pos = 0; 22 } 22 } 23 23 24 template <class T> //T must be an unsigned nu 24 template <class T> //T must be an unsigned number type. 25 inline void tosu(T a_i,char a_s[],unsigned int 25 inline void tosu(T a_i,char a_s[],unsigned int& a_l) { 26 //assume a_s is sufficently allocated (32 is 26 //assume a_s is sufficently allocated (32 is ok). 27 a_l = 0; 27 a_l = 0; 28 {char* pos = a_s; 28 {char* pos = a_s; 29 T i = a_i; 29 T i = a_i; 30 while(true) { 30 while(true) { 31 if(i<=9) {*pos = '0'+char(i);pos++;a_l++;* 31 if(i<=9) {*pos = '0'+char(i);pos++;a_l++;*pos=0;pos++;break;} 32 T r = i % 10; 32 T r = i % 10; 33 *pos = '0'+char(r);pos++; 33 *pos = '0'+char(r);pos++; 34 a_l++; 34 a_l++; 35 i = i/10; 35 i = i/10; 36 }} 36 }} 37 //strrev(s); 37 //strrev(s); 38 {unsigned int hl = a_l/2; 38 {unsigned int hl = a_l/2; 39 char* beg = a_s; 39 char* beg = a_s; 40 char* end = a_s+a_l-1; 40 char* end = a_s+a_l-1; 41 for(unsigned int i=0;i<hl;i++) { 41 for(unsigned int i=0;i<hl;i++) { 42 char c = *end; 42 char c = *end; 43 *end = *beg; 43 *end = *beg; 44 *beg = c; 44 *beg = c; 45 beg++;end--; 45 beg++;end--; 46 }} 46 }} 47 } 47 } 48 48 49 } 49 } 50 50 51 #endif 51 #endif