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