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
00213 ArrayList &split (ArrayList &tokens,
00214 const char *separator = " ") const;
00215
00222 StringBuffer& join(ArrayList &tokens, const char *separator);
00223
00230 StringBuffer substr(size_t pos, size_t len = npos) const;
00231
00236 unsigned long length() const;
00237
00241 void reserve(size_t len);
00242
00246 StringBuffer& upperCase() ;
00247
00251 StringBuffer& lowerCase() ;
00252
00257 bool icmp(const char *sc) const ;
00258
00262 bool empty() const;
00263
00267 bool null() const;
00268
00272 bool endsWith(char ch) const;
00273
00277 bool endsWith(const char* str) const;
00278
00286 StringBuffer& trim(char trimchr=' ');
00287
00291 ArrayElement* clone() ;
00292
00296 StringBuffer& operator= (const char* sc) ;
00297 StringBuffer& operator= (const StringBuffer& s) ;
00298 StringBuffer& operator+= (const char* sc) ;
00299 StringBuffer& operator+= (const StringBuffer& s) ;
00300 bool operator== (const char* sc) const ;
00301 bool operator== (const StringBuffer& sb) const ;
00302 bool operator!= (const char* sc) const ;
00303 bool operator!= (const StringBuffer& s) const ;
00304
00309 char operator[]( int index ) const;
00310
00311 operator const char* () const { return s; } ;
00312
00313 private:
00314 char* s;
00315 size_t size;
00316
00317
00318 void getmem(size_t len);
00319
00320 void freemem();
00321 };
00322
00323 StringBuffer operator+(const StringBuffer& x, const char *y);
00324
00325
00326 END_NAMESPACE
00327
00329 #endif
00330