00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef INCL_BASE_STRING_BUFFER
00037 #define INCL_BASE_STRING_BUFFER
00038
00040 #include "base/globalsdef.h"
00041 #include "base/fscapi.h"
00042 #include "base/util/ArrayElement.h"
00043
00044 BEGIN_NAMESPACE
00045
00046 class ArrayList;
00047
00057 class StringBuffer: public ArrayElement {
00058 public:
00059
00060 static const size_t npos;
00061
00075 StringBuffer(const char* str = "", size_t len = npos);
00076
00080 StringBuffer(const StringBuffer &sb);
00081
00085 ~StringBuffer();
00086
00090 StringBuffer& append(const char* );
00091
00096 StringBuffer& append(const char* sNew, unsigned long len);
00097
00101 StringBuffer& append(unsigned long u, bool sign = true);
00102
00106 StringBuffer& append(StringBuffer& s);
00107
00111 StringBuffer& append(StringBuffer* str);
00112
00116 StringBuffer& assign(const char* );
00117
00119 StringBuffer& set(const char* other) { return assign(other);};
00120
00127 StringBuffer& convert(const WCHAR* wc, const char *encoding = 0);
00128
00134 StringBuffer& sprintf(const char* format, ...)
00135 #ifdef __GNUC__
00136
00137 __attribute__ ((format (printf, 2, 3)))
00138 #endif
00139 ;
00140
00146 StringBuffer& vsprintf(const char* format, PLATFORM_VA_LIST ap)
00147 #ifdef __GNUC__
00148
00149 __attribute__ ((format (printf, 2, 0)))
00150 #endif
00151 ;
00152
00153
00157 StringBuffer& reset();
00158
00162 const char* getChars() const { return c_str(); };
00163
00167 const char* c_str() const { return s; };
00168
00175 size_t find(const char *str, size_t pos = 0) const;
00176
00182 size_t ifind(const char *str, size_t pos = 0) const;
00183
00189 size_t rfind(const char *str, size_t pos = 0) const;
00190
00197 size_t replace(const char *from, const char *to, size_t pos = 0);
00203 int replaceAll(const char *from, const char *to, size_t pos = 0);
00204
00205
00211 ArrayList &split (ArrayList &tokens,
00212 const char *separator = " ") const;
00213
00220 StringBuffer& join(ArrayList &tokens, const char *separator);
00221
00228 StringBuffer substr(size_t pos, size_t len = npos) const;
00229
00234 unsigned long length() const;
00235
00239 void reserve(size_t len);
00240
00244 StringBuffer& upperCase() ;
00245
00249 StringBuffer& lowerCase() ;
00250
00255 bool icmp(const char *sc) const ;
00256
00260 bool empty() const;
00261
00265 bool null() const;
00266
00270 bool endsWith(char ch) const;
00271
00275 bool endsWith(const char* str) const;
00276
00280 StringBuffer& trim();
00281
00285 ArrayElement* clone() ;
00286
00290 StringBuffer& operator= (const char* sc) ;
00291 StringBuffer& operator= (const StringBuffer& s) ;
00292 StringBuffer& operator+= (const char* sc) ;
00293 StringBuffer& operator+= (const StringBuffer& s) ;
00294 bool operator== (const char* sc) const ;
00295 bool operator== (const StringBuffer& sb) const ;
00296 bool operator!= (const char* sc) const ;
00297 bool operator!= (const StringBuffer& s) const ;
00298
00303 char operator[]( int index ) const;
00304
00305 operator const char* () const { return s; } ;
00306
00307 private:
00308 char* s;
00309 size_t size;
00310
00311
00312 void getmem(size_t len);
00313
00314 void freemem();
00315 };
00316
00317 StringBuffer operator+(const StringBuffer& x, const char *y);
00318
00319
00320 END_NAMESPACE
00321
00323 #endif
00324