7#include <Inventor/C/errors/debugerror.h>
8#include <Inventor/SbPList.h>
11#include <Inventor/SbString.h>
16#define SbMinimum(a,b) ((a)<(b)?(a):(b))
25 char* p = (
char*)::malloc((
unsigned)::strlen(aString)+1);
28 return ::strcpy(p,aString);
41 if(aString.getLength()<=0)
return list;
43 SbString
string = aString;
45 char* token = (
char*)
string.getString();
48 char* pos = ::strstr (token,aLimiter);
54 token = pos + ::strlen(aLimiter);
64 int wordn = list.getLength();
67 word = (
char*)list[
count];
68 list[
count] =
new SbString(word);
81 int linen = aList.getLength();
87 const SbString& aString
93 if( (aString==
"true") || (aString==
"TRUE") ||
94 (aString==
"yes") || (aString==
"YES") ) {
97 }
else if( (aString==
"false") || (aString==
"FALSE") ||
98 (aString==
"no") || (aString==
"NO") ) {
109 const char*
string = aString.getString();
111 long value = ::strtol(
string,&s,10);
122 const char*
string = aString.getString();
124 double value = ::strtod(
string,&s);
129 aValue = (float)value;
137 if(::sscanf(aString.getString(),
"%lx",&aValue)!=1) {
138 if(::sscanf(aString.getString(),
"%lu",&aValue)!=1) {
149 va_start(args,aFormat);
164 va_start(args,aFormat);
167 if(sbString==NULL)
return "";
168 SbString s(*sbString);
175 int lsearch = aSearch.getLength();
177 int number = aString.getLength();
186 int lsearch = aSearch.getLength();
188 int number = aString.getLength();
199 return aString.getSubString(
index+1);
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';
211 SbString* sbString =
new SbString(
string);
219 if(aNumber<0)
return NULL;
221 if(sbString==NULL)
return NULL;
222 const char*
string = sbString->getString();
223 ::vsprintf((
char*)
string,aFormat,aArgs);
224 if(
string[aNumber]!=
'\0') {
225 ::printf(
"SbStringCreateV : buffer overflow \n");
234 if(aString.getLength()<4)
return FALSE;
235 if(aString.getSubString(0,3)!=
"TTF/")
return FALSE;
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) {
255 if(back_slash!=std::string::npos) {
258 pos = std::string::npos;
262 if(pos==std::string::npos) {
263 env = a_String.substr(dollar+1,a_String.length()-(dollar+1));
267 env = a_String.substr(dollar+1,pos-(dollar+1));
269 char* val = ::getenv(env.c_str());
271 std::string value = a_String.substr(0,dollar);
273 if(pos!=std::string::npos)
274 value += a_String.substr(pos,a_String.length()-pos);
275 a_String = std::move(value);
278 aString = SbString(a_String.c_str());
282 aString = SbString(a_String.c_str());
288 const char* env = ::getenv(aString.getString());
289 return (env?TRUE:FALSE);
296 const char* env = ::getenv(aString.getString());
298 aValue = SbString(env);
308 std::string a_Old(aOld.getString());
309 std::string a_New(aNew.getString());
310 if(a_Old==
"")
return FALSE;
312 std::string::size_type lold = a_Old.length();
314 std::string stmp(aString.getString());
316 std::string::size_type pos = stmp.find(a_Old);
317 if(pos==std::string::npos){
321 snew += stmp.substr(0,pos);
323 stmp = stmp.substr(pos+lold,stmp.length()-(pos+lold));
327 aString = SbString(snew.c_str());
SbBool SbString_isenv(const SbString &aString)
char * SbSTRDUP(const char *aString)
SbBool SbString_getenv(const SbString &aString, SbString &aValue)
SbBool SbStringPrintF(SbString &aString, int aNumber, const char *aFormat,...)
SbPList SbStringGetWords(const SbString &aString, const char *aLimiter)
int SbStringFind(const SbString &aString, const SbString &aSearch)
static SbString * SbStringCreateV(int, const char *, va_list)
int SbStringReverseFind(const SbString &aString, const SbString &aSearch)
void SbSTRDEL(char *&aString)
SbBool SbStringIsTTF(const SbString &aString)
SbString * SbStringCreateEmpty(int aLength)
SbBool SbStringConvertToBool(const SbString &aString, SbBool &aValue)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
SbBool SbStringReplace(SbString &aString, const SbString &aOld, const SbString &aNew)
SbBool SbStringConvertToUnsignedLong(const SbString &aString, unsigned long &aValue)
SbBool SbStringConvertToFloat(const SbString &aString, float &aValue)
SbBool SbStringConvertToInt(const SbString &aString, int &aValue)
void SbStringDelete(SbPList &aList)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
SbString SbStringSuffix(const SbString &aString)
SbBool SbStringGetenv(SbString &aString)
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
std::string number(const double &d, const std::string &s)