Geant4 Cross Reference

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

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 ]

  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