00001 #ifndef _WOOPSI_STRING_H_ 00002 #define _WOOPSI_STRING_H_ 00003 00004 #include <nds.h> 00005 00006 namespace WoopsiUI { 00007 00019 class WoopsiString { 00020 public: 00021 00025 WoopsiString(); 00026 00031 WoopsiString(const char* text); 00032 00037 WoopsiString(const char letter); 00038 00043 virtual inline const char* getCharArray() const { return _text; }; 00044 00049 virtual void setText(const char* text); 00050 00055 virtual void setText(const char text); 00056 00061 virtual void append(const char* text); 00062 00067 virtual void append(const char text); 00068 00074 virtual void insert(const char* text, const u32 index); 00075 00081 virtual void insert(const char text, const u32 index); 00082 00087 virtual void remove(const u32 startIndex); 00088 00095 virtual void remove(const u32 startIndex, const u32 count); 00096 00101 virtual inline const u32 getLength() const { return _length; }; 00102 00107 inline WoopsiString(const WoopsiString& string) { 00108 setText(string.getCharArray()); 00109 }; 00110 00114 virtual inline ~WoopsiString() { 00115 delete[] _text; 00116 _text = NULL; 00117 }; 00118 00124 char& operator[](const u32 index) const { 00125 return _text[index]; 00126 }; 00127 00133 virtual inline const char getCharAt(u32 index) { return _text[index]; }; 00134 00135 protected: 00136 char* _text; 00144 virtual void allocateMemory(u32 chars, bool preserve); 00145 00150 virtual inline bool hasData() const { return (_text != NULL); }; 00151 00156 virtual inline u32 getAllocatedSize() { return _allocatedSize; }; 00157 00158 private: 00159 u32 _length; 00160 u32 _allocatedSize; 00161 u32 _growAmount; 00163 }; 00164 } 00165 00166 #endif