Import Geant4 11.0.0.beta source tree
This commit is contained in:
+108
@@ -0,0 +1,108 @@
|
||||
// Copyright (C) 2010, Guy Barrand. All rights reserved.
|
||||
// See the file tools.license for terms.
|
||||
|
||||
#ifndef tools_sto
|
||||
#define tools_sto
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace tools {
|
||||
|
||||
inline bool to(const std::string& a_string,bool& a_value,bool a_def = false){
|
||||
if( (a_string=="1")
|
||||
||(a_string=="true")||(a_string=="TRUE")||(a_string=="True")
|
||||
||(a_string=="yes")||(a_string=="YES")||(a_string=="Yes")
|
||||
||(a_string=="on")||(a_string=="ON")||(a_string=="On")
|
||||
){
|
||||
a_value = true;
|
||||
return true;
|
||||
} else if((a_string=="0")
|
||||
||(a_string=="false")||(a_string=="FALSE")||(a_string=="False")
|
||||
||(a_string=="no")||(a_string=="NO")||(a_string=="No")
|
||||
||(a_string=="off")||(a_string=="OFF")||(a_string=="Off")
|
||||
){
|
||||
a_value = false;
|
||||
return true;
|
||||
} else {
|
||||
a_value = a_def;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
inline bool tob(const std::string& a_string,bool& a_value,bool a_def = false) {return to(a_string,a_value,a_def);}
|
||||
|
||||
}
|
||||
|
||||
#include <sstream>
|
||||
|
||||
namespace tools {
|
||||
|
||||
template <class T>
|
||||
inline bool to(const std::string& a_s,T& a_v,const T& a_def = T()) {
|
||||
if(a_s.empty()) {a_v = a_def;return false;} //for TOOLS_STL istringstream.
|
||||
std::istringstream strm(a_s.c_str());
|
||||
strm >> a_v;
|
||||
if(strm.fail()) {a_v = a_def;return false;}
|
||||
return strm.eof();
|
||||
}
|
||||
|
||||
template <class T>
|
||||
inline bool to(T& a_field,const std::string& a_s,bool& a_changed){
|
||||
T old = a_field;
|
||||
//if(!tools::to(a_s,a_field)) {a_field = old;a_changed=false;return false;}
|
||||
if(!to(a_s,a_field)) {a_field = old;a_changed=false;return false;}
|
||||
a_changed = a_field==old?false:true;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#include <ostream>
|
||||
|
||||
namespace tools {
|
||||
|
||||
template <class T>
|
||||
inline bool to(std::ostream& a_out,const std::string& a_string,T& a_value){
|
||||
if(!to<T>(a_string,a_value)) {
|
||||
a_out << "Passed value \"" << a_string << "\""
|
||||
<< " is of bad type."
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool to(std::ostream& a_out,const std::string& a_string,bool& a_value){
|
||||
if(!to(a_string,a_value)) {
|
||||
a_out << "Passed value \"" << a_string << "\""
|
||||
<< " is not a boolean."
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#include "typedefs"
|
||||
#include <cstddef> //size_t
|
||||
|
||||
namespace tools {
|
||||
|
||||
inline bool to_size_t(const std::string& a_string,size_t& a_value,const size_t& a_def = 0){
|
||||
if(sizeof(size_t)==8) {
|
||||
uint64 v;
|
||||
bool status = to<uint64>(a_string,v,a_def);
|
||||
a_value = v;
|
||||
return status;
|
||||
} else { //assume 4 :
|
||||
uint32 v;
|
||||
bool status = to<uint32>(a_string,v,(uint32)a_def);
|
||||
a_value = v;
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user