include/df/string.hpp

00001 //#define NEW_TYPES            //Include this when uint8 != char
00002 
00003 /*
00004   string.hpp  Strings
00005 */
00006 
00007 #ifndef __STRING_HPP__
00008 #define __STRING_HPP__
00009 #else
00010 #error DigiForce Include Error
00011 #endif
00012 
00013 class String : virtual public SystemCode {
00014   public:
00015     char *cString;                              //c-style string data
00016     int Length;                                 //length of string
00017 
00018     // constructors
00019     String();                                   //   default
00020     String( uint32 );                           //   with specified size
00021     String( int32 );                            //   with specified size
00022     String( const String & );                   //   from another String
00023     String( char const *s,                           //   from another String of known length
00024             int len = -1);
00025     String( char, int rep = 1 );                //   from single character
00026 
00027     ~String();                                  // deconstructor
00028 
00029     // conversion operators
00030     operator void * ();                         //   to PTR
00031     operator char * ();                         //   to C string
00032     operator char ** ();                        //   ptr to C string
00033     operator char const * ();                   //   to C string
00034     operator char const * () const;             //   to C string
00035     operator char () const;                     //   to single character
00036     operator char ();                           //   to single character
00037 
00038     // assignment operators
00039     String & operator = ( char const * );       //   from a C string
00040     String & operator = ( String const & );     //   from another String ref
00041     String & operator = ( String const * );     //   from another String ptr
00042 
00043     // append operators
00044     String & operator += ( String const & );    //   another string
00045     String & operator += ( char const * );      //   a C string
00046     String & operator += ( const char );        //   a char
00047 
00048     String operator () ( int pos,               // substring operator
00049                          int n) const;
00050 
00051     char & operator () ( int pos );             // reference-to-char operator
00052     char const & operator ()
00053     ( int pos ) const;       // reference-to-char operator
00054     char & operator [] ( int pos );             //*subscript operator
00055     char & operator [] ( uint pos );            //*subscript operator
00056     char const & operator []
00057     ( int pos ) const;       //*subscript operator
00058 
00059     // comparison operators
00060     friend BOOL operator == (
00061       String const &, String const & );   //   String == String?
00062     friend BOOL operator == (
00063       String const &, char const * );     //   String == C string?
00064     friend BOOL operator == (
00065       char const *, String const & );     //   C string == String?
00066     friend BOOL operator == (
00067       String const &, char );             //   String == character?
00068     friend BOOL operator == (
00069       char, String const & );             //   character == String?
00070 
00071     friend BOOL operator != (
00072       String const &, String const & );   //   String != String?
00073     friend BOOL operator != (
00074       String const &, char const * );     //   String != C string?
00075     friend BOOL operator != (
00076       char const *, String const & );     //   C string != String?
00077     friend BOOL operator != (
00078       String const &, char );             //   String != character?
00079     friend BOOL operator != (
00080       char, String const & );             //   character != String?
00081 
00082     friend BOOL operator < (
00083       String const &, String const & );   //   String < String?
00084     friend BOOL operator < (
00085       String const &, char const * );     //   String < C string?
00086     friend BOOL operator < (
00087       char const *, String const & );     //   C string < String?
00088     friend BOOL operator < (
00089       String const &, char );             //   String < character?
00090     friend BOOL operator < (
00091       char, String const & );             //   character < String?
00092 
00093     friend BOOL operator <= (
00094       String const &, String const & );   //   String <= String?
00095     friend BOOL operator <= (
00096       String const &, char const * );     //   String <= C string?
00097     friend BOOL operator <= (
00098       char const *, String const & );     //   C string <= String?
00099     friend BOOL operator <= (
00100       String const &, char );             //   String <= character?
00101     friend BOOL operator <= (
00102       char, String const & );             //   character <= String?
00103 
00104     friend BOOL operator > (
00105       String const &, String const & );   //   String > String?
00106     friend BOOL operator > (
00107       String const &, char const * );     //   String > C string?
00108     friend BOOL operator > (
00109       char const *, String const & );     //   C string > String?
00110     friend BOOL operator > (
00111       String const &, char );             //   String > character?
00112     friend BOOL operator > (
00113       char, String const & );             //   character > String?
00114 
00115     friend BOOL operator >= (
00116       String const &, String const & );   //   String >= String?
00117     friend BOOL operator >= (
00118       String const &, char const * );     //   String >= C string?
00119     friend BOOL operator >= (
00120       char const *, String const & );     //   C string >= String?
00121     friend BOOL operator >= (
00122       String const &, char );             //   String >= character?
00123     friend BOOL operator >= (
00124       char, String const & );             //   character >= String?
00125 
00126     // concatenate string operators
00127     /*
00128     //HERE! - Messes other things up
00129         friend  String operator + (
00130                 String const &, String const & );   //   String + String
00131 
00132 
00133         friend  String operator + (
00134                 String const &, char const * );     //   String + C string
00135 
00136         friend  String operator + (
00137                 String const &, char * );           //*  String + C string
00138 
00139         friend  String operator + (
00140                 char const *, String const & );     //   C string + String
00141 
00142         friend  String operator + (
00143                 char *, String const & );           //*  C string + String
00144 
00145         friend  String operator + (
00146                 String const &, char );             //   String + character
00147 
00148         friend  String operator + (
00149                 char, String const & );             //   character + String
00150     */
00151 
00152     // Member functions:
00153 
00154     void ReAlloc(int);                   //resize buffer for string
00155 
00156     void Compact()                       //resize buffer to string length
00157     { ReAlloc(strlen(cString)); }       //Length will be adjusted to true length
00158 
00159     int length() const;                  //*length of String
00160 
00161     // find differing character loc
00162     int match( char const * ) const;        //   search string is a C string
00163 
00164     // find substring location
00165     int index( String const &,                   //   search string is a String
00166                int pos = 0 ) const;
00167     int index( char const *,                     //   search string is a C string
00168                int pos = 0 ) const;
00169     int index( char ) const;                //   search is a char
00170 
00171     // letter case conversion
00172     String upper() const;                   //*  to upper case
00173     String lower() const;                   //*  to lower case
00174 
00175     void TrimLeft( char * lpszTargets );    //trim chars from Left to Right
00176     void TrimLeft( char chTarget );
00177     void TrimRight( char * lpszTargets );
00178     void TrimRight( char chTarget );
00179 };
00180 
00181 //friend definitions
00182 
00183 BOOL operator == (
00184   String const &, String const & );   //   String == String?
00185 BOOL operator == (
00186   String const &, char const * );     //   String == C string?
00187 BOOL operator == (
00188   char const *, String const & );     //   C string == String?
00189 BOOL operator == (
00190   String const &, char );             //   String == character?
00191 BOOL operator == (
00192   char, String const & );             //   character == String?
00193 BOOL operator != (
00194   String const &, String const & );   //   String != String?
00195 BOOL operator != (
00196   String const &, char const * );     //   String != C string?
00197 BOOL operator != (
00198   char const *, String const & );     //   C string != String?
00199 BOOL operator != (
00200   String const &, char );             //   String != character?
00201 BOOL operator != (
00202   char, String const & );             //   character != String?
00203 
00204 BOOL operator < (
00205   String const &, String const & );   //   String < String?
00206 BOOL operator < (
00207   String const &, char const * );     //   String < C string?
00208 BOOL operator < (
00209   char const *, String const & );     //   C string < String?
00210 BOOL operator < (
00211   String const &, char );             //   String < character?
00212 BOOL operator < (
00213   char, String const & );             //   character < String?
00214 
00215 BOOL operator <= (
00216   String const &, String const & );   //   String <= String?
00217 BOOL operator <= (
00218   String const &, char const * );     //   String <= C string?
00219 BOOL operator <= (
00220   char const *, String const & );     //   C string <= String?
00221 BOOL operator <= (
00222   String const &, char );             //   String <= character?
00223 BOOL operator <= (
00224   char, String const & );             //   character <= String?
00225 
00226 BOOL operator > (
00227   String const &, String const & );   //   String > String?
00228 BOOL operator > (
00229   String const &, char const * );     //   String > C string?
00230 BOOL operator > (
00231   char const *, String const & );     //   C string > String?
00232 BOOL operator > (
00233   String const &, char );             //   String > character?
00234 BOOL operator > (
00235   char, String const & );             //   character > String?
00236 
00237 BOOL operator >= (
00238   String const &, String const & );   //   String >= String?
00239 BOOL operator >= (
00240   String const &, char const * );     //   String >= C string?
00241 BOOL operator >= (
00242   char const *, String const & );     //   C string >= String?
00243 BOOL operator >= (
00244   String const &, char );             //   String >= character?
00245 BOOL operator >= (
00246   char, String const & );             //   character >= String?
00247 
00248 // concatenate string operators
00249 /*
00250       String operator + (
00251             String const &, String const & );   //   String + String
00252 
00253       String operator + (
00254             String const &, char const * );     //   String + C string
00255 
00256       String operator + (
00257             String const &, char * );           //*  String + C string
00258 
00259       String operator + (
00260             char const *, String const & );     //   C string + String
00261 
00262       String operator + (
00263             char *, String const & );           //*  C string + String
00264 
00265       String operator + (
00266             String const &, char );             //   String + character
00267 
00268       String operator + (
00269             char, String const & );             //   character + String
00270 
00271 */
00272 
00273 

Generated on Mon Mar 5 09:49:14 2007 for DigiForce by  doxygen 1.4.7