18 #ifndef __BASICSTRING_H__ 19 #define __BASICSTRING_H__ 30 #define READBUFSTR "128" 32 #ifdef __PREFIX_STRING__ 33 #define String BasicString 41 void NewString(
int startsize);
49 static bool caseSensitive;
51 explicit String(
int startsize = 0)
57 explicit String(
char ch,
int count = 1);
73 String & Copy(
const char * s);
86 String & LeftClip(
int clipAmount);
87 String & RightClip(
int clipAmount);
89 String & operator = (
char ch);
90 String operator + (
char ch)
const;
91 String & operator += (
char ch);
97 String & operator = (
const char * rhs);
98 String operator + (
const char * rhs)
const;
99 String & operator += (
const char * rhs);
101 String & operator = (
int rhs);
102 String operator + (
int rhs)
const;
103 String & operator += (
int rhs);
105 String & operator = (
double rhs);
106 String operator + (
double rhs)
const;
107 String & operator += (
double rhs);
109 void appendFullFloat(
float rhs);
111 String & operator = (
unsigned int rhs);
112 String operator + (
unsigned int rhs)
const;
113 String & operator += (
unsigned int rhs);
114 String operator *(
unsigned int rhs)
const;
115 String & operator *= (
unsigned int rhs);
117 int Compare(
const String & rhs)
const;
118 int FastCompare(
const String & rhs)
const;
119 int SlowCompare(
const String & rhs)
const;
121 int Compare(
const char * rhs)
const;
122 int FastCompare(
const char * rhs)
const;
123 int SlowCompare(
const char * rhs)
const;
125 int CompareToStem(
const String & stem)
const;
126 int FastCompareToStem(
const String & stem)
const;
127 int SlowCompareToStem(
const String & stem)
const;
129 int CompareToStem(
const char * stem)
const;
130 int FastCompareToStem(
const char * stem)
const;
131 int SlowCompareToStem(
const char * stem)
const;
133 int MatchesBeginningOf(
const String & stem)
const;
134 int FastMatchesBeginningOf(
const String & stem)
const;
135 int SlowMatchesBeginningOf(
const String & stem)
const;
137 int MatchesBeginningOf(
const char * stem)
const;
138 int FastMatchesBeginningOf(
const char * stem)
const;
139 int SlowMatchesBeginningOf(
const char * stem)
const;
141 int operator == (
const String & rhs)
const 143 return Compare(rhs) == 0;
145 int operator != (
const String & rhs)
const 147 return Compare(rhs) != 0;
149 int operator < (
const String & rhs)
const 151 return Compare(rhs) < 0;
153 int operator > (
const String & rhs)
const 155 return Compare(rhs) > 0;
157 int operator >= (
const String & rhs)
const 159 return Compare(rhs) >= 0;
161 int operator <= (
const String & rhs)
const 163 return Compare(rhs) <= 0;
166 int operator == (
const char * rhs)
const 168 return Compare(rhs) == 0;
170 int operator != (
const char * rhs)
const 172 return Compare(rhs) != 0;
174 int operator < (
const char * rhs)
const 176 return Compare(rhs) < 0;
178 int operator > (
const char * rhs)
const 180 return Compare(rhs) > 0;
182 int operator <= (
const char * rhs)
const 184 return Compare(rhs) <= 0;
186 int operator >= (
const char * rhs)
const 188 return Compare(rhs) >= 0;
191 operator const char *()
const 195 const char *c_str()
const 197 return (
const char *) buffer;
204 operator int ()
const 208 operator double()
const 212 operator long double()
const;
214 char operator [](
int i)
const 218 char & operator [](
int i)
225 return buffer[len - 1];
232 void Grow(
int newSize);
235 char * LockBuffer(
int size = -1);
246 int ReadLine(FILE * f);
247 void WriteLine(FILE * f);
248 void Write(FILE * f);
254 int ReadLine(
IFILE & f);
256 String Left(
int count)
const;
257 String Right(
int count)
const;
258 String Mid(
int start,
int end)
const;
259 String SubStr(
int start,
int count)
const;
260 String SubStr(
int start)
const;
262 int FindChar(
char ch,
int start = 0)
const;
263 int FastFindChar(
char ch,
int start = 0)
const;
264 int SlowFindChar(
char ch,
int start = 0)
const;
266 int FindLastChar(
char ch)
const;
267 int FastFindLastChar(
char ch)
const;
268 int SlowFindLastChar(
char ch)
const;
273 int Find(
char ch,
int start = 0)
const 275 return(FindChar(ch, start));
277 int Find(
const String & str,
int start = 0)
const;
278 int FastFind(
const String & str,
int start = 0)
const;
279 int SlowFind(
const String & str,
int start = 0)
const;
282 String & Filter(
const char * s);
285 String & ExcludeCharacters(
const char * s);
291 int BufferSize()
const 296 int SetLength(
int newlen);
297 int Dimension(
int newlen)
299 return SetLength(newlen);
316 String & Trim(
char character);
317 vector<String> *Split(
char splitChar);
319 long AsInteger()
const;
320 bool AsInteger(
long& intValue)
const;
321 bool AsInteger(
int& intValue)
const;
322 double AsDouble()
const 324 return (
double) *
this;
326 long double AsLongDouble()
const 328 return (
long double) *
this;
331 int printf(
const char * format, ...);
332 int vprintf(
const char * format, va_list arglist);
334 int catprintf(
const char * format, ...);
335 int vcatprintf(
const char * format, va_list arglist);
340 static int my_snprintf(
char * buffer,
int bufsize,
const char * format, ...);
341 static int my_vsnprintf(
char * buffer,
int bufsize,
const char * format, va_list args);
342 static void my_vsnprintf_close_file();
343 static void check_vsnprintf();
349 const unsigned char * uchar()
const 351 return (
unsigned char *) buffer;
353 const signed char * schar()
const 355 return (
signed char *) buffer;
358 static FILE * my_vsnprintf_file;
361 void Fill(
char ch,
int length = -1);
365 static int vsnprintfChecked;
368 inline int Compare(
const String & s1,
const String & s2)
370 return s1.Compare(s2);
373 inline int Compare(
const String & s1,
const char * s2)
375 return s1.Compare(s2);
378 inline int Compare(
const char * s1,
const String & s2)
380 return -s2.Compare(s1);
383 inline int FastCompare(
const String & s1,
const String & s2)
385 return s1.FastCompare(s2);
388 inline int FastCompare(
const String & s1,
const char * s2)
390 return s1.FastCompare(s2);
393 inline int FastCompare(
const char * s1,
const String & s2)
395 return -s2.FastCompare(s1);
398 inline int SlowCompare(
const String & s1,
const String & s2)
400 return s1.SlowCompare(s2);
403 inline int SlowCompare(
const String & s1,
const char * s2)
405 return s1.SlowCompare(s2);
408 inline int SlowCompare(
const char * s1,
const String & s2)
410 return -s2.SlowCompare(s1);
414 String operator + (
const char * lhs,
const String & rhs);
416 String operator + (
unsigned int lhs,
const String & rhs);
425 unsigned int numExpected = str.Length();
426 unsigned int numWritten =
427 stream.
ifwrite(str.c_str(), numExpected);
428 if(numExpected != numWritten)
430 std::cerr <<
"Failed to stream to IFILE, expected " 431 << numExpected <<
" but only wrote " 432 << numWritten << std::endl;