00001 #ifndef __CString__ 00002 #define __CString__ 00003 00004 // =========================================================================== 00005 00006 #ifdef WIN32 00007 #pragma warning (disable : 4522) 00008 #endif 00009 00010 // =========================================================================== 00011 00012 #include "CCountedObject.hpp" 00013 #include "CPascalString.hpp" 00014 00015 // =========================================================================== 00016 00017 using Exponent::Basics::CCountedObject; 00018 using Exponent::Basics::CPascalString; 00019 00020 // =========================================================================== 00021 00022 namespace Exponent 00023 { 00024 namespace Basics 00025 { 00052 class CString : public CCountedObject 00053 { 00055 EXPONENT_CLASS_DECLARATION; 00058 // =========================================================================== 00059 00060 public: 00061 00062 // =========================================================================== 00063 00064 const static long CSTRING_SHORT_TEXT_LENGTH = 8; 00065 const static long CSTRING_MIDDLE_TEXT_LENGTH = 256; 00066 const static long CSTRING_LONG_TEXT_LENGTH = 1024; 00067 const static char CSTRING_EMPTY_STRING[3]; 00068 const static char CSTRING_NULL_STRING[]; 00070 // =========================================================================== 00071 00076 CString(const char *string = " "); 00077 00082 CString(const CString &string); 00083 00087 virtual ~CString(); 00088 00089 // =========================================================================== 00090 00096 virtual CString &operator = (const CString &string); 00097 00103 virtual CString &operator = (CString &string); 00104 00110 virtual CString &operator = (const char *string); 00111 00117 virtual CString &operator = (const float value); 00118 00124 virtual CString &operator = (const long value); 00125 00131 virtual CString &operator = (const int value); 00132 00138 virtual CString &operator = (const bool value); 00139 00145 virtual CString &operator += (const CString &string); 00146 00152 virtual CString &operator += (const char *string); 00153 00159 virtual bool operator == (const char *equals) const; 00160 00166 virtual bool operator == (const CString &string) const; 00167 00173 virtual bool operator != (const char *string) const; 00174 00180 virtual bool operator != (const CString &string) const; 00181 00186 virtual bool operator ! () const; 00187 00193 virtual char operator [] (const long index) const; 00194 00195 // =========================================================================== 00196 00202 virtual CPascalString getStringAsPascalString(); 00203 00204 // =========================================================================== 00205 00211 static double toDouble(const char *text); 00212 00218 static float toFloat(const char *text); 00219 00225 static long toLong(const char *text); 00226 00232 static int toInt(const char *text); 00233 00239 static char *toString(const float value); 00240 00246 static char *toString(const int value); 00247 00253 static char *toString(const long value); 00254 00259 static CString *newEmptyString() { return new CString(CString::CSTRING_NULL_STRING); } 00260 00265 static CString emptyString() { return CString(CString::CSTRING_NULL_STRING); } 00266 00267 // =========================================================================== 00268 00273 virtual void setString(const char *string); 00274 00279 virtual void setString(const CString &string); 00280 00286 virtual void setStringWithFormat(const char *text, ...); 00287 00288 // =========================================================================== 00289 00294 virtual void appendString(const char character); 00295 00300 virtual void appendString(const char *string); 00301 00306 virtual void appendString(const CString &string); 00307 00308 // =========================================================================== 00309 00315 virtual void getString(char *buffer, const long size) const; 00316 00321 virtual void getString(char *buffer) const; 00322 00329 virtual CString getSubString(const long start, const long end) const; 00330 00335 virtual const char *getString() const; 00336 00337 // =========================================================================== 00338 00343 virtual long getNumberOfCharacters() const; 00344 00350 virtual char characterAt(const int index) const; 00351 00352 // =========================================================================== 00353 00357 virtual void toUpperCase(); 00358 00362 virtual void toLowerCase(); 00363 00364 // =========================================================================== 00365 00369 virtual void removeTrailingAndLeadingWhiteSpace(); 00370 00374 virtual void removeLeadingWhiteSpace(); 00375 00379 virtual void removeTrailingWhiteSpace(); 00380 00384 virtual void removeLastCharacter(); 00385 00391 virtual void replaceCharWithChar(const char characterToReplace, const char characterToReplaceWith); 00392 00398 virtual void replaceCharWithString(const char characterToReplace, const CString &stringToReplaceWith); 00399 00405 virtual void replaceStringWithChar(const char characterToReplaceWith, const CString &stringToReplace); 00406 00407 // =========================================================================== 00408 00414 static char toUpperCase(const char letter); 00415 00421 static char toLowerCase(const char letter); 00422 00428 static bool isWhiteSpace(const char letter); 00429 00430 // =========================================================================== 00431 00437 virtual bool equals(const char *other) const; 00438 00444 virtual bool equals(const CString &string) const; 00445 00451 virtual bool equalsIgnoringCase(const char *other) const; 00452 00458 virtual bool equalsIgnoringCase(const CString &string) const; 00459 00460 // =========================================================================== 00461 00467 virtual long findForward(const char character); 00468 00474 virtual long findBackwards(const char character); 00475 00481 long findSubString(const CString &string); 00482 00483 // =========================================================================== 00484 00485 #ifndef WIN32 00486 00491 CFStringRef getStringAsCFStringRef() const; 00492 00497 virtual void setStringFromCFStringRef(const CFStringRef &string); 00498 #endif 00499 00500 // =========================================================================== 00501 00507 virtual void getObjectDescription(char *string, const long size) const; 00508 00509 // =========================================================================== 00510 00511 protected: 00512 00513 // =========================================================================== 00514 00515 char *m_string; 00516 long m_numberOfCharacters; 00517 }; 00518 } 00519 } 00520 #endif // End of CString.hpp