Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

String.h

Go to the documentation of this file.
00001 /*
00002  * This file is part of the ToolBox.
00003  * Copyright Thomas Jacob.
00004  *
00005  * READ README.TXT BEFORE USE!!
00006  */
00007 
00008 
00009 #ifndef __TOOLBOX_STRING_H
00010 #define __TOOLBOX_STRING_H
00011 
00012 
00013 // TODO: String-Ressourcen-Dateien
00014 // TODO: Optional Lokalisierung
00015 // TODO: Optional Unicode
00016 
00021 #define _TB_ST_SIZEINCREMENT 16
00022 
00023 
00024 // Helper defines for plain C style strings
00025 
00026 #define CLONE_STRING(attribute, value) \
00027    { \
00028       if ((attribute = new char[strlen(value) + 1]) == NULL) \
00029          throw EOutOfMemory::Get(); \
00030       strcpy(attribute, (value)); \
00031    }
00032 
00033 #define UPDATE_STRING(attribute, value) \
00034    { \
00035       if (attribute != NULL) {delete attribute;} \
00036       if ((attribute = new char[strlen(value) + 1]) == NULL) \
00037          throw EOutOfMemory::Get(); \
00038       strcpy(attribute, (value)); \
00039    }
00040 
00041 
00042 namespace toolbox
00043 {
00052    #if defined(_DEBUG) && (defined(_AFX) || defined(_AFXDLL))
00053       class String : public CObject
00054    #else
00055       class String
00056    #endif
00057    {
00058       private:
00059 
00067          char * Data;
00068 
00069          #ifdef _TOOLBOX_TEST
00070 
00073             static int InstanceCount;
00074          #endif
00075 
00079          unsigned int Size;
00080 
00089          void Allocate(unsigned int minimumSize);
00090 
00091       public:
00092 
00096          String();
00097 
00102          String(const class String & String);
00103 
00108          String(const class String * String);
00109 
00114          String(const char * string);
00115 
00124          String(const class String & String, unsigned int fromIndex, unsigned int length);
00125 
00134          String(const class String * String, unsigned int fromIndex, unsigned int length);
00135 
00144          String(const char * string, unsigned int fromIndex, unsigned int length);
00145 
00150          String(char character);
00151 
00156          String(int number);
00157 
00162          inline String(unsigned int number);
00163 
00168          String(long number);
00169 
00174          String(unsigned long number);
00175 
00180          String(bool boolean);
00181 
00187          ~String();
00188 
00196          inline String operator +(const class String & String) const;
00197 
00205          inline String operator +(const class String * String) const;
00206 
00214          inline String operator +(const char * string) const;
00215 
00223          inline String operator +(char character) const;
00224 
00232          inline String operator +(int number) const;
00233 
00241          inline String operator +(unsigned int number) const;
00242 
00250          inline String operator +(long number) const;
00251 
00259          inline String operator +(unsigned long number) const;
00260 
00268          inline String operator +(bool boolean) const;
00269 
00274          inline void operator +=(const class String & String);
00275 
00280          inline void operator +=(const class String * String);
00281 
00286          inline void operator +=(const char * string);
00287 
00292          inline void operator +=(char character);
00293 
00298          inline void operator +=(int number);
00299 
00304          inline void operator +=(unsigned int number);
00305 
00310          inline void operator +=(long number);
00311 
00316          inline void operator +=(unsigned long number);
00317 
00322          inline void operator +=(bool boolean);
00323 
00328          inline void operator =(const class String & String);
00329 
00334          inline void operator =(const class String * String);
00335 
00340          void operator =(const char * string);
00341 
00346          void operator =(char character);
00347 
00352          void operator =(int number);
00353 
00358          inline void operator =(unsigned int number);
00359 
00364          void operator =(long number);
00365 
00370          void operator =(unsigned long number);
00371 
00376          void operator =(bool boolean);
00377 
00384          inline bool operator <(const class String & String) const;
00385 
00392          inline bool operator <(const class String * String) const;
00393 
00400          inline bool operator <(const char * string) const;
00401 
00408          inline bool operator <=(const class String & String) const;
00409 
00416          inline bool operator <=(const class String * String) const;
00417 
00424          inline bool operator <=(const char * string) const;
00425 
00432          inline bool operator >(const class String & String) const;
00433 
00440          inline bool operator >(const class String * String) const;
00441 
00448          inline bool operator >(const char * string) const;
00449 
00456          inline bool operator >=(const class String & String) const;
00457 
00464          inline bool operator >=(const class String * String) const;
00465 
00472          inline bool operator >=(const char * string) const;
00473 
00483          inline bool operator ==(const class String & String) const;
00484 
00494          inline bool operator ==(const class String * String) const;
00495 
00505          inline bool operator ==(const char * string) const;
00506 
00515          inline bool operator !=(const class String & String) const;
00516 
00525          inline bool operator !=(const class String * String) const;
00526 
00535          inline bool operator !=(const char * string) const;
00536 
00544          inline char operator [](int index) const;
00545 
00550          inline operator const char *() const;
00551 
00556          inline void Append(const class String & String);
00557 
00562          inline void Append(const class String * String);
00563 
00568          void Append(const char * string);
00569 
00574          void Append(char character);
00575 
00580          void Append(int number);
00581 
00586          inline void Append(unsigned int number);
00587 
00592          void Append(long number);
00593 
00598          void Append(unsigned long number);
00599 
00604          void Append(bool boolean);
00605 
00609          inline void Clear();
00610 
00615          inline String Clone() const;
00616 
00626          static inline int Compare(const String & String1, const String & String2);
00627 
00637          static inline int Compare(const String * String1, const String * String2);
00638 
00649          static int Compare(const char * string1, const char * string2);
00650 
00660          static inline int CompareIC(const String & String1, const String & String2);
00661 
00671          static inline int CompareIC(const String * String1, const String * String2);
00672 
00683          static int CompareIC(const char * string1, const char * string2);
00684 
00694          inline int CompareTo(const String & String) const;
00695 
00705          inline int CompareTo(const String * String) const;
00706 
00716          inline int CompareTo(const char * string) const;
00717 
00727          inline int CompareToIC(const String & String) const;
00728 
00738          inline int CompareToIC(const String * String) const;
00739 
00749          inline int CompareToIC(const char * string) const;
00750 
00756          inline bool Contains(const class String & String) const;
00757 
00763          inline bool Contains(const class String * String) const;
00764 
00770          inline bool Contains(const char * string) const;
00771 
00779          void Cut(unsigned int fromIndex);
00780 
00792          void Cut(unsigned int fromIndex, unsigned int length);
00793 
00799          inline bool EndsWith(const class String & String) const;
00800 
00806          inline bool EndsWith(const class String * String) const;
00807 
00813          bool EndsWith(const char * string) const;
00814 
00821          inline bool EndsWithIC(const class String & String) const;
00822 
00829          inline bool EndsWithIC(const class String * String) const;
00830 
00837          bool EndsWithIC(const char * string) const;
00838 
00846          inline bool Equals(const class String & String) const;
00847 
00855          inline bool Equals(const class String * String) const;
00856 
00864          inline bool Equals(const char * string) const;
00865 
00872          inline bool EqualsIC(const class String & String) const;
00873 
00880          inline bool EqualsIC(const class String * String) const;
00881 
00888          inline bool EqualsIC(const char * string) const;
00889 
00896          inline int Find(const class String & String) const;
00897 
00904          inline int Find(const class String * String) const;
00905 
00912          int Find(const char * string) const;
00913 
00927          inline int Find(const class String & String, unsigned int fromIndex) const;
00928 
00942          inline int Find(const class String * String, unsigned int fromIndex) const;
00943 
00957          int Find(const char * string, unsigned int fromIndex) const;
00958 
00965          inline int FindIC(const class String & String) const;
00966 
00973          inline int FindIC(const class String * String) const;
00974 
00981          inline int FindIC(const char * string) const;
00982 
00996          inline int FindIC(const class String & String, unsigned int fromIndex) const;
00997 
01011          inline int FindIC(const class String * String, unsigned int fromIndex) const;
01012 
01026          int FindIC(const char * string, unsigned int fromIndex) const;
01027 
01034          inline int FindLast(const class String & String) const;
01035 
01042          inline int FindLast(const class String * String) const;
01043 
01050          inline int FindLast(const char * string) const;
01051 
01065          inline int FindLast(const class String & String, unsigned int fromIndex) const;
01066 
01080          inline int FindLast(const class String * String, unsigned int fromIndex) const;
01081 
01095          int FindLast(const char * string, unsigned int fromIndex) const;
01096 
01103          inline int FindLastIC(const class String & String) const;
01104 
01111          inline int FindLastIC(const class String * String) const;
01112 
01119          inline int FindLastIC(const char * string) const;
01120 
01134          inline int FindLastIC(const class String & String, unsigned int fromIndex) const;
01135 
01149          inline int FindLastIC(const class String * String, unsigned int fromIndex) const;
01150 
01164          int FindLastIC(const char * string, unsigned int fromIndex) const;
01165 
01172          void Format(const char * format, ...);
01173 
01180          void FormatFromVargs(const char * format, const va_list & arguments);
01181 
01186          unsigned int GetLength() const;
01187 
01192          String * HeapClone() const;
01193 
01201          inline void Insert(const class String & String, unsigned int index);
01202 
01210          inline void Insert(const class String * String, unsigned int index);
01211 
01219          void Insert(const char * string, unsigned int index);
01220 
01228          void Insert(char character, unsigned int index);
01229 
01237          void Insert(int number, unsigned int index);
01238 
01246          inline void Insert(unsigned int number, unsigned int index);
01247 
01255          void Insert(long number, unsigned int index);
01256 
01264          void Insert(unsigned long number, unsigned int index);
01265 
01273          void Insert(bool boolean, unsigned int index);
01274 
01280          static bool IsCharacter(unsigned char character);
01281 
01287          static bool IsDigit(unsigned char character);
01288 
01293          inline bool IsEmpty() const;
01294 
01300          static bool IsLowerCharacter(unsigned char character);
01301 
01307          static bool IsUpperCharacter(unsigned char character);
01308 
01314          static bool IsValid(unsigned char character);
01315 
01321          static bool IsWhiteSpace(unsigned char character);
01322 
01327          inline void Prepend(const class String & String);
01328 
01333          inline void Prepend(const class String * String);
01334 
01339          void Prepend(const char * string);
01340 
01345          void Prepend(char character);
01346 
01351          void Prepend(int number);
01352 
01357          inline void Prepend(unsigned int number);
01358 
01363          void Prepend(long number);
01364 
01369          void Prepend(unsigned long number);
01370 
01375          void Prepend(bool boolean);
01376 
01387          bool ReadFrom(const char * fileName, bool textMode);
01388 
01396          bool ReadFrom(FILE * file);
01397 
01404          inline void Replace(const String & Text, const String & Replacement);
01405 
01412          inline void Replace(const String * Text, const String * Replacement);
01413 
01420          void Replace(const char * text, const char * replacement);
01421 
01428          void Replace(char character, char replacement);
01429 
01430          #ifdef _TOOLBOX_TEST
01431 
01437             static void RunTestSuite(int * performedTests, int * failedTests);
01438          #endif
01439 
01445          inline bool StartsWith(const class String & String) const;
01446 
01452          inline bool StartsWith(const class String * String) const;
01453 
01459          bool StartsWith(const char * string) const;
01460 
01467          inline bool StartsWithIC(const class String & String) const;
01468 
01475          inline bool StartsWithIC(const class String * String) const;
01476 
01483          bool StartsWithIC(const char * string) const;
01484 
01495          String Substring(unsigned int fromIndex, unsigned int length) const;
01496 
01504          String Substring(unsigned int fromIndex) const;
01505 
01509          void ToLowerCase();
01510 
01517          static unsigned char ToLowerCase(unsigned char character);
01518 
01522          void ToUpperCase();
01523 
01530          static unsigned char ToUpperCase(unsigned char character);
01531 
01536          void Trim();
01537 
01542          void TrimLeft();
01543 
01548          void TrimRight();
01549 
01562          bool WriteTo(const char * fileName, bool textMode, bool append = false);
01563 
01569          inline bool WriteTo(FILE * file);
01570    };
01571 }
01572 
01573 
01574 #endif

Generated on Tue Oct 3 00:23:38 2006 for ToolBox by doxygen 1.3.6