10 #include <TObjArray.h>
11 #include <TObjString.h>
30 static struct IsLonger{
32 bool operator()(TString s1, TString s2){
return ( s1.Length() > s2.Length() ); }
35 static struct IsShorter{
37 bool operator()(TString s1, TString s2){
return ( s1.Length() < s2.Length() ); }
41 inline vector<TString> Tokenize(TString line,TString delim){
44 if(line.IsNull() || line.IsWhitespace())
return list;
46 const char *delimiters = delim.Data();
48 TObjArray* Strings = line.Tokenize(delimiters);
50 if(Strings->GetEntriesFast()) {
51 TIter iString(Strings);
54 while ((os=(TObjString*)iString())) {
59 list.push_back(os->GetString());
71 inline vector<string> TokenizeStr(
string line,
string delim){
74 std::vector<TString> TS = Tokenize(TString(line),TString(delim));
76 std::vector<string> list;
78 for(
int i=0; i< TS.size(); ++i){
80 list.push_back(
string(TS[i]) );
88 inline int Duplicates( std::vector<TString> list){
92 for(
int i1=0; i1< list.size()-1; ++i1){
93 for(
int i2=i1+1; i2< list.size();++i2){
94 if(list.at(i1)==list.at(i2)) N++;
102 inline bool StringIsPresent(std::vector<TString> &list, TString &s){
104 for(
int i=0;i<list.size();++i){
105 if( list.at(i)==s )
return 1;
112 template <
typename T>
113 string ToString ( T Number )
115 std::ostringstream ss;
122 template <
typename N>
123 N ToNumber (
const string &Text )
125 std::istringstream ss(Text);
127 return ss >> result ? result : 0;
133 inline TString Name(TString str1,TString sep,TString str2=
"") {
137 name+=sep; name+=str2;
143 inline TString Name(TString str1,TString sep1,TString str2,TString sep2, TString str3) {
145 TString name=Name(str1,sep1,str2);
147 name+=sep2; name+=str3;
153 inline TString Name(TString str1,TString sep1,TString str2,TString sep2, TString str3, TString sep3, TString str4) {
155 TString name=Name(str1,sep1,str2,sep2,str3);
157 name+=sep3; name+=str4;
164 inline TString SplitLineLabel(TString top, TString bottom){
168 if(bottom.IsWhitespace())
return top;
170 label = Name(
"#splitline{",top,
"}{",bottom,
"}");
175 inline TString Title(TString tit1,TString sep,TString tit2) {
179 title+=sep; title+=tit2;
185 inline TString TitleXYZ(TString tit,TString titx,TString tity=
"",TString titz=
"") {
190 title+=
";"; title+=titx;
192 if(!tity.IsWhitespace() ){
193 title+=
";"; title+=tity;
196 if(!titz.IsWhitespace() ){
197 title+=
";"; title+=titz;
221 std::vector<TString> vec=STR_UTILS::Tokenize(tit,
";");
225 if(n==0)
return tit2;
228 str=STR_UTILS::Name(vec.at(0),sep,tit2);
233 str=STR_UTILS::TitleXYZ(str,vec.at(1));
237 str=STR_UTILS::TitleXYZ(str,vec.at(2));
241 str=STR_UTILS::TitleXYZ(str,vec.at(3));
264 std::vector<TString> vec=STR_UTILS::Tokenize(tit,
";");
268 if(n==0)
return tit2;
271 str=STR_UTILS::Name(tit2,sep,vec.at(0));
276 str=STR_UTILS::TitleXYZ(str,vec.at(1));
280 str=STR_UTILS::TitleXYZ(str,vec.at(2));
284 str=STR_UTILS::TitleXYZ(str,vec.at(3));
295 namespace StringUtils = STR_UTILS;
TString PrependToTitleXYZ(TString tit, TString sep, TString tit2)
Definition: StringUtils.h:247
TString AppendToTitleXYZ(TString tit, TString sep, TString tit2)
Definition: StringUtils.h:205