#include #include #include #include using namespace std; #include "FairDbString.h" ClassImp(FairDbString) FairDbString::FairDbString() : fString() { } FairDbString::FairDbString(const Char_t* str) : fString(str) { } FairDbString::FairDbString(const std::string& str) : fString(str) { } FairDbString::~FairDbString() { } #define OUT(t,v) \ ostringstream out; \ out << v; \ fString.append(out.str()); \ return *this; FairDbString& FairDbString::operator<<(Int_t data) { OUT(Int_t,data) } FairDbString& FairDbString::operator<<(UInt_t data) { OUT(UInt_t,data) } FairDbString& FairDbString::operator<<(Float_t data) { OUT(Float_t,data) } FairDbString& FairDbString::operator<<(Char_t data) { fString.append(1,data); return *this; } FairDbString& FairDbString::operator<<(const Char_t* data) { fString.append(data); return *this; } FairDbString& FairDbString::operator<<(const std::string& data) { fString.append(data); return *this; } // namespace String Utility void FairUtilString::MakePrintable(const Char_t* in, std::string& out) { Bool_t hasSpecial = false; Int_t index = 0; while ( UChar_t c = in[index++] ) { if ( c == '\\' || c == '\n' || c == '\t' || c == '\'' || c == '\"' || c <= '\x08' || (c >= '\x0b' && c <= '\x1f' ) || c >= '\x7f' ) { hasSpecial = true; break; } } if ( ! hasSpecial ) { out += in; return; } index = 0; while ( UChar_t c = in[index++] ) { // Skip really unprInt_table ones. if ( c <= '\x08' || (c >= '\x0b' && c <= '\x1f' ) || c >= '\x7f' ) { continue; } if ( c == '\\' || c == '\n' || c == '\t' || c == '\'' || c == '\"') { switch ( c ) { case '\\': out += "\\\\"; break; case '\n': out += "\\n"; break; case '\t': out += "\\t"; break; case '\'': out += "\\\'"; break; case '\"': out += "\\\""; break; } } else { out += c; } } } void FairUtilString::StringTok(std::vector& ls, const std::string& str, const std::string& tok) { const string::size_type S = str.size(); const string::size_type toksz = tok.size(); string::size_type i = 0; while (i < S) { // eat leading whitespace while ( (i