Woopsi 1.0
GUI Framework for Nintendo DS Homebrew
|
00001 #ifndef _WOOPSI_STRING_H_ 00002 #define _WOOPSI_STRING_H_ 00003 00004 #include <nds.h> 00005 00006 namespace WoopsiUI { 00007 00008 class StringIterator; 00009 00029 class WoopsiString { 00030 public: 00031 00035 WoopsiString(); 00036 00042 WoopsiString(const char* text); 00043 00048 WoopsiString(const u32 letter); 00049 00054 WoopsiString(const WoopsiString& string); 00055 00059 virtual inline ~WoopsiString() { 00060 delete[] _text; 00061 _text = NULL; 00062 }; 00063 00070 StringIterator* newStringIterator() const; 00071 00081 virtual void copyToCharArray(char* buffer) const; 00082 00087 virtual void setText(const WoopsiString& text); 00088 00093 virtual void setText(const char* text); 00094 00099 virtual void setText(const u32 text); 00100 00105 virtual void append(const WoopsiString& text); 00106 00112 virtual void insert(const WoopsiString& text, const s32 index); 00113 00118 virtual void remove(const s32 startIndex); 00119 00126 virtual void remove(const s32 startIndex, const s32 count); 00127 00132 virtual const s32 getLength() const { return _stringLength; }; 00133 00138 virtual const s32 getByteCount() const { return _dataLength; }; 00139 00149 virtual const u32 getCharAt(s32 index) const; 00150 00157 const s32 indexOf(u32 letter) const; 00158 00167 const s32 indexOf(u32 letter, s32 startIndex) const; 00168 00179 virtual const s32 indexOf(u32 letter, s32 startIndex, s32 count) const; 00180 00187 const s32 lastIndexOf(u32 letter) const; 00188 00198 const s32 lastIndexOf(u32 letter, s32 startIndex) const; 00199 00210 virtual const s32 lastIndexOf(u32 letter, s32 startIndex, s32 count) const; 00211 00219 WoopsiString* subString(s32 startIndex) const; 00220 00229 WoopsiString* subString(s32 startIndex, s32 length) const; 00230 00237 WoopsiString& operator=(const WoopsiString& string); 00238 00245 WoopsiString& operator=(const char* string); 00246 00253 WoopsiString& operator=(u32 letter); 00254 00263 virtual s32 compareTo(const WoopsiString& string) const; 00264 00265 protected: 00266 char* _text; 00274 virtual void allocateMemory(s32 chars, bool preserve); 00275 00281 virtual inline bool hasData() const { return _dataLength > 0; }; 00282 00287 virtual inline s32 getAllocatedSize() const { return _allocatedSize; }; 00288 00299 s32 filterString(char* dest, const char* src, s32 sourceBytes, s32* totalUnicodeChars) const; 00300 00305 virtual inline const char* getCharArray() const { return _text; }; 00306 00311 virtual char* getToken(const s32 index) const; 00312 00321 u32 getCodePoint(const char* string, u8* numChars = NULL) const; 00322 00323 private: 00324 friend class StringIterator; 00325 00326 s32 _dataLength; 00327 s32 _stringLength; /*< Number of unicode tokens in the string */ 00328 s32 _allocatedSize; 00329 s32 _growAmount; 00342 const char* encodeCodePoint(u32 codePoint, u8* numBytes = NULL) const; 00343 }; 00344 } 00345 00346 #endif