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/util/ArrayElement.h"
00041
00042 #include <stdarg.h>
00043
00044 class ArrayList;
00045
00049 class StringBuffer: public ArrayElement {
00050 public:
00051
00052 static const size_t npos;
00053
00054 StringBuffer(const char* str = NULL, size_t len = npos);
00055
00056 StringBuffer(const StringBuffer &sb);
00057
00058 StringBuffer(const void* str, size_t len);
00059
00060 ~StringBuffer();
00061
00062 StringBuffer& append(const char* );
00063
00064 StringBuffer& append(unsigned long u, BOOL sign = TRUE);
00065
00066 StringBuffer& append(StringBuffer& s);
00067
00068 StringBuffer& append(StringBuffer* str);
00069
00070 StringBuffer& set(const char* );
00071
00077 StringBuffer& sprintf(const char* format, ...)
00078 #ifdef __GNUC__
00079
00080 __attribute__ ((format (printf, 2, 3)))
00081 #endif
00082 ;
00083
00089 StringBuffer& vsprintf(const char* format, va_list ap)
00090 #ifdef __GNUC__
00091
00092 __attribute__ ((format (printf, 2, 0)))
00093 #endif
00094 ;
00095
00096
00100 StringBuffer& reset();
00101
00105 const char* getChars() const;
00106 inline const char* c_str() const { return s; };
00107
00114 size_t find(const char *str, size_t pos = 0) const;
00115
00121 size_t ifind(const char *str, size_t pos = 0) const;
00122
00128 size_t rfind(const char *str, size_t pos = 0) const;
00129
00136 size_t replace(const char *from, const char *to, size_t pos = 0);
00142 int replaceAll(const char *from, const char *to, size_t pos = 0);
00143
00150 ArrayList &split (ArrayList &tokens,
00151 const char *delimiters = " ") const;
00152
00159 StringBuffer& join(ArrayList &tokens, const char *separator);
00160
00167 StringBuffer substr(size_t pos, size_t len = npos) const;
00168
00173 unsigned long length() const;
00174
00178 void reserve(size_t len);
00179
00183 StringBuffer& upperCase() ;
00184
00188 StringBuffer& lowerCase() ;
00189
00194 bool icmp(const char *sc) const ;
00195
00199 bool empty() const;
00200
00204 bool null() const;
00205
00209 ArrayElement* clone() ;
00210
00214 StringBuffer& operator= (const char* sc) ;
00215 StringBuffer& operator= (const StringBuffer& s) ;
00216 StringBuffer& operator+= (const char* sc) ;
00217 StringBuffer& operator+= (const StringBuffer& s) ;
00218 bool operator== (const char* sc) const ;
00219 bool operator== (const StringBuffer& sb) const ;
00220 bool operator!= (const char* sc) const ;
00221 bool operator!= (const StringBuffer& s) const ;
00222
00223 operator const char* () const { return s; } ;
00224
00225 private:
00226 char* s;
00227 size_t size;
00228
00229
00230 void getmem(size_t len);
00231
00232 void freemem();
00233 };
00234
00235 StringBuffer operator+(const StringBuffer& x, const char *y);
00236
00238 #endif
00239