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_pointer 4 #ifndef tools_pointer 5 #define tools_pointer 5 #define tools_pointer 6 6 7 //WARNING : touchy. 7 //WARNING : touchy. 8 //WARNING : _MSC_VER && _WIN64 : sizeof(void*) 8 //WARNING : _MSC_VER && _WIN64 : sizeof(void*) is NOT sizeof(unsigned long). 9 9 10 #include "typedefs" 10 #include "typedefs" 11 11 12 #include "snpf" 12 #include "snpf" 13 13 14 #include <string> 14 #include <string> 15 15 16 namespace tools { 16 namespace tools { 17 17 18 inline bool to_pointer(const std::string& a_st 18 inline bool to_pointer(const std::string& a_string,void*& a_value){ 19 upointer v = 0; 19 upointer v = 0; 20 if(::sscanf(a_string.c_str(),upointer_format 20 if(::sscanf(a_string.c_str(),upointer_format_x(),&v)!=1) { 21 if(::sscanf(a_string.c_str(),upointer_form 21 if(::sscanf(a_string.c_str(),upointer_format(),&v)!=1) { 22 a_value = 0; 22 a_value = 0; 23 return false; 23 return false; 24 } 24 } 25 } 25 } 26 a_value = (void*)v; 26 a_value = (void*)v; 27 return true; 27 return true; 28 } 28 } 29 29 30 inline bool to_pointer(const char* a_string,vo 30 inline bool to_pointer(const char* a_string,void*& a_value){ 31 upointer v = 0; 31 upointer v = 0; 32 if(::sscanf(a_string,upointer_format_x(),&v) 32 if(::sscanf(a_string,upointer_format_x(),&v)!=1) { 33 if(::sscanf(a_string,upointer_format(),&v) 33 if(::sscanf(a_string,upointer_format(),&v)!=1) { 34 a_value = 0; 34 a_value = 0; 35 return false; 35 return false; 36 } 36 } 37 } 37 } 38 a_value = (void*)v; 38 a_value = (void*)v; 39 return true; 39 return true; 40 } 40 } 41 41 42 inline bool p2s(const void* a_value,std::strin 42 inline bool p2s(const void* a_value,std::string& a_s){ 43 char _s[512]; 43 char _s[512]; 44 snpf(_s,sizeof(_s),upointer_format(),(upoint 44 snpf(_s,sizeof(_s),upointer_format(),(upointer)a_value); 45 a_s = _s; 45 a_s = _s; 46 return true; 46 return true; 47 } 47 } 48 48 49 inline bool p2sx(const void* a_value,std::stri 49 inline bool p2sx(const void* a_value,std::string& a_s){ 50 char _s[512]; 50 char _s[512]; 51 snpf(_s,sizeof(_s),upointer_format_x(),(upoi 51 snpf(_s,sizeof(_s),upointer_format_x(),(upointer)a_value); 52 a_s = _s; 52 a_s = _s; 53 return true; 53 return true; 54 } 54 } 55 55 56 /* 56 /* 57 inline std::string p2s(const void* a_value){ 57 inline std::string p2s(const void* a_value){ 58 char _s[512]; 58 char _s[512]; 59 snpf(_s,sizeof(_s),"%lu",(unsigned long)a_va 59 snpf(_s,sizeof(_s),"%lu",(unsigned long)a_value); 60 return _s; 60 return _s; 61 } 61 } 62 62 63 inline std::string p2sx(const void* a_value){ 63 inline std::string p2sx(const void* a_value){ 64 char _s[512]; 64 char _s[512]; 65 snpf(_s,sizeof(_s),"0x%lx",(unsigned long)a_ 65 snpf(_s,sizeof(_s),"0x%lx",(unsigned long)a_value); 66 return _s; 66 return _s; 67 } 67 } 68 68 69 inline std::string char_p2s(const char* a_valu 69 inline std::string char_p2s(const char* a_value) { 70 char _s[512]; 70 char _s[512]; 71 snpf(_s,sizeof(_s),"%lu",(unsigned long)a_va 71 snpf(_s,sizeof(_s),"%lu",(unsigned long)a_value); 72 return std::string(_s); 72 return std::string(_s); 73 } 73 } 74 74 75 inline std::string long2s(const long a_value) 75 inline std::string long2s(const long a_value) { 76 char _s[512]; 76 char _s[512]; 77 snpf(_s,sizeof(_s),"%ld",a_value); 77 snpf(_s,sizeof(_s),"%ld",a_value); 78 return std::string(_s); 78 return std::string(_s); 79 } 79 } 80 */ 80 */ 81 81 82 } 82 } 83 83 84 #endif 84 #endif