g4tools  5.4.0
pointer
Go to the documentation of this file.
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
tools::upointer_format_x
const char * upointer_format_x()
Definition: typedefs:80
typedefs
tools::p2sx
bool p2sx(const void *a_value, std::string &a_s)
Definition: pointer:49
snpf
tools::upointer_format
const char * upointer_format()
Definition: typedefs:79
tools::snpf
int snpf(char *a_s, size_t a_n, const char *a_fmt,...)
Definition: snpf:27
tools::upointer
unsigned long upointer
Definition: typedefs:78
tools::p2s
bool p2s(const void *a_value, std::string &a_s)
Definition: pointer:42
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::to_pointer
bool to_pointer(const std::string &a_string, void *&a_value)
Definition: pointer:18