ATLAS Offline Software
Macros | Functions
SbStringHelpers.cxx File Reference
#include <Inventor/C/errors/debugerror.h>
#include <Inventor/SbPList.h>
#include "SbStringHelpers.h"
#include <Inventor/SbString.h>
#include <stdlib.h>
#include <string.h>
#include <string>
Include dependency graph for SbStringHelpers.cxx:

Go to the source code of this file.

Macros

#define SbMinimum(a, b)   ((a)<(b)?(a):(b))
 

Functions

char * SbSTRDUP (const char *aString)
 
void SbSTRDEL (char *&aString)
 
SbPList SbStringGetWords (const SbString &aString, const char *aLimiter)
 
void SbStringDelete (SbPList &aList)
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// More...
 
SbBool SbStringConvertToBool (const SbString &aString, SbBool &aValue)
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// More...
 
SbBool SbStringConvertToInt (const SbString &aString, int &aValue)
 
SbBool SbStringConvertToFloat (const SbString &aString, float &aValue)
 
SbBool SbStringConvertToUnsignedLong (const SbString &aString, unsigned long &aValue)
 
SbBool SbStringPrintF (SbString &aString, int aNumber, const char *aFormat,...)
 
SbString SbStringPrintF (int aNumber, const char *aFormat,...)
 
int SbStringFind (const SbString &aString, const SbString &aSearch)
 
int SbStringReverseFind (const SbString &aString, const SbString &aSearch)
 
SbString SbStringSuffix (const SbString &aString)
 
SbString * SbStringCreateEmpty (int aLength)
 
SbBool SbStringIsTTF (const SbString &aString)
 
SbBool SbStringGetenv (SbString &aString)
 
SbBool SbString_isenv (const SbString &aString)
 
SbBool SbString_getenv (const SbString &aString, SbString &aValue)
 
SbBool SbStringReplace (SbString &aString, const SbString &aOld, const SbString &aNew)
 

Macro Definition Documentation

◆ SbMinimum

#define SbMinimum (   a,
 
)    ((a)<(b)?(a):(b))

Definition at line 17 of file SbStringHelpers.cxx.

Function Documentation

◆ SbSTRDEL()

void SbSTRDEL ( char *&  aString)

Definition at line 32 of file SbStringHelpers.cxx.

32  {
33  ::free(aString);
34  aString = NULL;
35 }

◆ SbSTRDUP()

char* SbSTRDUP ( const char *  aString)

Definition at line 24 of file SbStringHelpers.cxx.

24  {
25  char* p = (char*)::malloc((unsigned)::strlen(aString)+1);
26  if(p==NULL) return 0;
27  //cppcheck-suppress returnDanglingLifetime
28  return ::strcpy(p,aString);
29 }

◆ SbString_getenv()

SbBool SbString_getenv ( const SbString &  aString,
SbString &  aValue 
)

Definition at line 295 of file SbStringHelpers.cxx.

295  {
296  const char* env = ::getenv(aString.getString());
297  if(env) {
298  aValue = SbString(env);
299  return TRUE;
300  } else {
301  aValue = "";
302  return FALSE;
303  }
304 }

◆ SbString_isenv()

SbBool SbString_isenv ( const SbString &  aString)

Definition at line 287 of file SbStringHelpers.cxx.

287  {
288  const char* env = ::getenv(aString.getString());
289  return (env?TRUE:FALSE);
290 }

◆ SbStringConvertToBool()

SbBool SbStringConvertToBool ( const SbString &  aString,
SbBool &  aValue 
)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//

Definition at line 86 of file SbStringHelpers.cxx.

92 {
93  if( (aString=="true") || (aString=="TRUE") ||
94  (aString=="yes") || (aString=="YES") ) {
95  aValue = TRUE;
96  return TRUE;
97  } else if( (aString=="false") || (aString=="FALSE") ||
98  (aString=="no") || (aString=="NO") ) {
99  aValue = FALSE;
100  return TRUE;
101  } else {
102  aValue = FALSE;
103  return FALSE;
104  }
105 }

◆ SbStringConvertToFloat()

SbBool SbStringConvertToFloat ( const SbString &  aString,
float &  aValue 
)

Definition at line 121 of file SbStringHelpers.cxx.

121  {
122  const char* string = aString.getString();
123  char* s;
124  double value = ::strtod(string,&s);
125  if(s==string) {
126  aValue = 0;
127  return FALSE;
128  }
129  aValue = (float)value;
130  return TRUE;
131 }

◆ SbStringConvertToInt()

SbBool SbStringConvertToInt ( const SbString &  aString,
int &  aValue 
)

Definition at line 108 of file SbStringHelpers.cxx.

108  {
109  const char* string = aString.getString();
110  char* s;
111  long value = ::strtol(string,&s,10);
112  if(s==string) {
113  aValue = 0L;
114  return FALSE;
115  }
116  aValue = (int)value;
117  return TRUE;
118 }

◆ SbStringConvertToUnsignedLong()

SbBool SbStringConvertToUnsignedLong ( const SbString &  aString,
unsigned long &  aValue 
)

Definition at line 134 of file SbStringHelpers.cxx.

135  {
136  aValue = 0L;
137  if(::sscanf(aString.getString(),"%lx",&aValue)!=1) {
138  if(::sscanf(aString.getString(),"%lu",&aValue)!=1) {
139  aValue = 0L;
140  return FALSE;
141  }
142  }
143  return TRUE;
144 }

◆ SbStringCreateEmpty()

SbString* SbStringCreateEmpty ( int  aLength)

Definition at line 205 of file SbStringHelpers.cxx.

205  {
206  if(aLength<=0) aLength = 0;
207  char* string = (char*)::malloc((aLength+1)*sizeof(char));
208  if(string==NULL) return NULL;
209  string[aLength] = '\0';
210  for(int count=0;count<aLength;count++) string[count] = ' ';
211  SbString* sbString = new SbString(string);
212  free(string);
213  return sbString;
214 }

◆ SbStringDelete()

void SbStringDelete ( SbPList &  aList)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//

Definition at line 75 of file SbStringHelpers.cxx.

80 {
81  int linen = aList.getLength();
82  for(int count=0;count<linen;count++) delete ((SbString*)aList[count]);
83  //aList.Clear();
84 }

◆ SbStringFind()

int SbStringFind ( const SbString &  aString,
const SbString &  aSearch 
)

Definition at line 174 of file SbStringHelpers.cxx.

174  {
175  int lsearch = aSearch.getLength();
176  if(lsearch<=0) return SbStringNotFound;
177  int number = aString.getLength();
178  for(int index=0;index<=(number-lsearch);index++) {
179  if(aString.getSubString(index,index+lsearch-1)==aSearch) return index;
180  }
181  return SbStringNotFound;
182 }

◆ SbStringGetenv()

SbBool SbStringGetenv ( SbString &  aString)

Definition at line 241 of file SbStringHelpers.cxx.

241  {
242  std::string a_String(aString.getString());
243  std::string::size_type dollar;
244  while((dollar=a_String.find('$'))!=std::string::npos){
245  std::string::size_type slash = a_String.find('/',dollar+1);
246  std::string::size_type back_slash = a_String.find('\\',dollar+1);
247  std::string::size_type pos = std::string::npos;
248  if(slash!=std::string::npos) {
249  if(back_slash!=std::string::npos) {
250  pos = SbMinimum(slash,back_slash);
251  } else {
252  pos = slash;
253  }
254  } else {
255  if(back_slash!=std::string::npos) {
256  pos = back_slash;
257  } else {
258  pos = std::string::npos;
259  }
260  }
261  std::string env;
262  if(pos==std::string::npos) {
263  env = a_String.substr(dollar+1,a_String.length()-(dollar+1));
264  } else {
265  // abc$xxx/ef
266  // 0 3 7 9
267  env = a_String.substr(dollar+1,pos-(dollar+1));
268  }
269  char* val = ::getenv(env.c_str());
270  if(val) {
271  std::string value = a_String.substr(0,dollar);
272  value += val;
273  if(pos!=std::string::npos)
274  value += a_String.substr(pos,a_String.length()-pos);
275  a_String = std::move(value);
276  }
277  if(!val) {
278  aString = SbString(a_String.c_str());
279  return FALSE; // Stop looping if env variable not found.
280  }
281  }
282  aString = SbString(a_String.c_str());
283  return TRUE;
284 }

◆ SbStringGetWords()

SbPList SbStringGetWords ( const SbString &  aString,
const char *  aLimiter 
)

Definition at line 38 of file SbStringHelpers.cxx.

38  {
39  SbPList list(16);
40 
41  if(aString.getLength()<=0) return list;
42 
43  SbString string = aString;
44 
45  char* token = (char*)string.getString();
46 
47  while(1) {
48  char* pos = ::strstr (token,aLimiter);
49  if(pos!=NULL) {
50  *pos = '\0';
51  if(*token!='\0') {
52  list.append(token);
53  }
54  token = pos + ::strlen(aLimiter);
55  } else {
56  //last word
57  if(*token!='\0') {
58  list.append(token);
59  }
60  break;
61  }
62  }
63 
64  int wordn = list.getLength();
65  char* word;
66  for(int count=0;count<wordn;count++) {
67  word = (char*)list[count];
68  list[count] = new SbString(word);
69  }
70 
71  return list;
72 }

◆ SbStringIsTTF()

SbBool SbStringIsTTF ( const SbString &  aString)

Definition at line 233 of file SbStringHelpers.cxx.

233  {
234  if(aString.getLength()<4) return FALSE;
235  if(aString.getSubString(0,3)!="TTF/") return FALSE;
236  return TRUE;
237 }

◆ SbStringPrintF() [1/2]

SbString SbStringPrintF ( int  aNumber,
const char *  aFormat,
  ... 
)

Definition at line 162 of file SbStringHelpers.cxx.

162  {
163  va_list args;
164  va_start(args,aFormat);
165  SbString* sbString = SbStringCreateV(aNumber,aFormat,args);
166  va_end(args);
167  if(sbString==NULL) return "";
168  SbString s(*sbString);
169  delete sbString;
170  return s;
171 }

◆ SbStringPrintF() [2/2]

SbBool SbStringPrintF ( SbString &  aString,
int  aNumber,
const char *  aFormat,
  ... 
)

Definition at line 147 of file SbStringHelpers.cxx.

147  {
148  va_list args;
149  va_start(args,aFormat);
150  SbString* sbString = SbStringCreateV(aNumber,aFormat,args);
151  va_end(args);
152  if(sbString==NULL) {
153  aString = "";
154  return FALSE;
155  }
156  aString = *sbString;
157  delete sbString;
158  return TRUE;
159 }

◆ SbStringReplace()

SbBool SbStringReplace ( SbString &  aString,
const SbString &  aOld,
const SbString &  aNew 
)

Definition at line 307 of file SbStringHelpers.cxx.

307  {
308  std::string a_Old(aOld.getString());
309  std::string a_New(aNew.getString());
310  if(a_Old=="") return FALSE;
311  std::string snew;
312  std::string::size_type lold = a_Old.length();
313  bool status = FALSE;
314  std::string stmp(aString.getString());
315  while(true) {
316  std::string::size_type pos = stmp.find(a_Old);
317  if(pos==std::string::npos){
318  snew += stmp;
319  break;
320  } else {
321  snew += stmp.substr(0,pos);
322  snew += a_New;
323  stmp = stmp.substr(pos+lold,stmp.length()-(pos+lold));
324  status = TRUE;
325  }
326  }
327  aString = SbString(snew.c_str());
328  return status;
329 }

◆ SbStringReverseFind()

int SbStringReverseFind ( const SbString &  aString,
const SbString &  aSearch 
)

Definition at line 185 of file SbStringHelpers.cxx.

185  {
186  int lsearch = aSearch.getLength();
187  if(lsearch<=0) return SbStringNotFound;
188  int number = aString.getLength();
189  for(int index=number-lsearch;index>=0;index--) {
190  if(aString.getSubString(index,index+lsearch-1)==aSearch) return index;
191  }
192  return SbStringNotFound;
193 }

◆ SbStringSuffix()

SbString SbStringSuffix ( const SbString &  aString)

Definition at line 196 of file SbStringHelpers.cxx.

196  {
197  int index = SbStringReverseFind(aString,".");
198  if(index==SbStringNotFound) return SbString("");
199  return aString.getSubString(index+1);
200 }
SbStringNotFound
#define SbStringNotFound
Definition: SbStringHelpers.h:37
python.CaloAddPedShiftConfig.args
args
Definition: CaloAddPedShiftConfig.py:47
jet::ExtendedBool::TRUE
@ TRUE
Definition: UncertaintyEnum.h:234
index
Definition: index.py:1
xAOD::char
char
Definition: TrigDecision_v1.cxx:38
athena.value
value
Definition: athena.py:124
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
TrigInDetValidation_Base.malloc
malloc
Definition: TrigInDetValidation_Base.py:127
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.selection.number
number
Definition: selection.py:20
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
DeMoScan.index
string index
Definition: DeMoScan.py:362
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
merge.status
status
Definition: merge.py:16
SbStringReverseFind
int SbStringReverseFind(const SbString &aString, const SbString &aSearch)
Definition: SbStringHelpers.cxx:185
SbMinimum
#define SbMinimum(a, b)
Definition: SbStringHelpers.cxx:16
python.DataFormatRates.env
env
Definition: DataFormatRates.py:32
jet::ExtendedBool::FALSE
@ FALSE
Definition: UncertaintyEnum.h:233
python.SystemOfUnits.L
float L
Definition: SystemOfUnits.py:92
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65