00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00025 #ifndef OSCL_STRING_H_INCLUDED
00026 #define OSCL_STRING_H_INCLUDED
00027
00028
00029 #ifndef OSCL_BASE_H_INCLUDED
00030 #include "oscl_base.h"
00031 #endif
00032
00033 #ifndef OSCL_MEM_H_INCLUDED
00034 #include "oscl_mem.h"
00035 #endif
00036
00039 enum TOSCL_StringOp
00040 {
00041
00042
00043 EOSCL_StringOp_CompressASCII
00044
00045 , EOSCL_StringOp_UTF16ToUTF8
00046 };
00047
00050 enum TOSCL_wStringOp
00051 {
00052
00053
00054 EOSCL_wStringOp_ExpandASCII
00055
00056 , EOSCL_wStringOp_UTF8ToUTF16
00057 };
00058
00063 class OSCL_IMPORT_REF OSCL_String : public HeapBase
00064
00065 {
00066 public:
00067 typedef char chartype;
00068
00073 virtual uint32 get_size() const = 0;
00074
00080 virtual uint32 get_maxsize() const = 0;
00081
00085 virtual const chartype* get_cstr() const = 0;
00086
00090 virtual bool is_writable() const;
00091
00096 virtual chartype* get_str() const = 0;
00097
00100 OSCL_String& operator=(const OSCL_String& src);
00101
00105 OSCL_String& operator=(const chartype* cstr);
00106
00111 OSCL_String& operator+=(const OSCL_String& src);
00112
00118 OSCL_String& operator+=(const chartype* cstr);
00119
00124 OSCL_String& operator+=(const chartype c);
00125
00128 bool operator== (const OSCL_String& src) const;
00129 bool operator!= (const OSCL_String& src) const;
00130 bool operator< (const OSCL_String& src) const;
00131 bool operator<= (const OSCL_String& src) const;
00132 bool operator> (const OSCL_String& src) const;
00133 bool operator>= (const OSCL_String& src) const;
00134
00138 bool operator== (const chartype* cstr) const;
00139
00146 chartype operator[](uint32 index) const;
00147
00153 virtual chartype read(uint32 index)const;
00154
00167 virtual uint32 setrep_to_char(const oscl_wchar* src, uint32 len,
00168 TOSCL_StringOp op, Oscl_DefAlloc* aAlloc);
00173 virtual int8 hash() const;
00174
00181 virtual void write(uint32 index, chartype c);
00182
00192 virtual void write(uint32 offset, uint32 length, const chartype* buf);
00193
00194 #ifdef T_ARM
00195
00196
00197 public:
00198 #else
00199 protected:
00200 #endif
00201 OSCL_String();
00202 virtual ~OSCL_String();
00203
00204 protected:
00211 virtual void set_rep(const chartype* cstr) = 0;
00212
00217 virtual void append_rep(const chartype* cstr) = 0;
00218
00221 virtual void set_rep(const OSCL_String& src) = 0;
00222
00226 virtual void append_rep(const OSCL_String& src) = 0;
00227
00231 virtual void set_len(uint32 len) = 0;
00232 };
00233
00241 class OSCL_IMPORT_REF OSCL_wString
00242 {
00243 public:
00244 typedef oscl_wchar chartype;
00245
00246 virtual uint32 get_size() const = 0;
00247
00248 virtual uint32 get_maxsize() const = 0;
00249
00250 virtual const chartype* get_cstr() const = 0;
00251
00252 virtual bool is_writable() const;
00253
00254 virtual chartype* get_str() const = 0;
00255
00256 OSCL_wString& operator=(const OSCL_wString& src);
00257 OSCL_wString& operator=(const chartype* cstr);
00258
00259 OSCL_wString& operator+=(const OSCL_wString& src);
00260 OSCL_wString& operator+=(const chartype* cstr);
00261 OSCL_wString& operator+=(const chartype c);
00262
00263 bool operator== (const OSCL_wString& src) const;
00264 bool operator!= (const OSCL_wString& src) const;
00265 bool operator< (const OSCL_wString& src) const;
00266 bool operator<= (const OSCL_wString& src) const;
00267 bool operator> (const OSCL_wString& src) const;
00268 bool operator>= (const OSCL_wString& src) const;
00269 bool operator== (const chartype* cstr) const;
00270
00271 chartype operator[](uint32 index) const;
00272
00273 virtual chartype read(uint32 index)const;
00274
00275 virtual uint32 setrep_to_wide_char(const char* src, uint32 len,
00276 TOSCL_wStringOp op, Oscl_DefAlloc* aAlloc);
00277
00278 virtual int8 hash() const;
00279
00280 virtual void write(uint32 index, chartype c);
00281 virtual void write(uint32 offset, uint32 length, const chartype* buf);
00282
00283 #ifdef T_ARM
00284
00285
00286 public:
00287 #else
00288 protected:
00289 #endif
00290 OSCL_wString();
00291 virtual ~OSCL_wString();
00292
00293 protected:
00294 virtual void set_rep(const chartype* cstr) = 0;
00295 virtual void append_rep(const chartype* cstr) = 0;
00296
00297 virtual void set_rep(const OSCL_wString& src) = 0;
00298 virtual void append_rep(const OSCL_wString& src) = 0;
00299
00300 virtual void set_len(uint32 len) = 0;
00301 };
00302
00303 #endif // OSCL_STRING_H_INCLUDED
00304