gstring.h

Go to the documentation of this file.
00001 #ifndef gSTRING_X_H
00002 #define gSTRING_X_H
00003 
00004 #include "gstorage.h"
00005 ////////////////////////////////////////////////////////////
00006 class gStringGeneric : public gStorage {
00007 public:
00008     // Public enums
00009     enum eStrStrategy {
00010         e_StrDefault,
00011         e_StrAlloc,
00012         e_StrPreAlloc
00013     };
00014 
00015     virtual ~gStringGeneric () ;
00016 
00017     // Get methods
00018     virtual bool IsEmpty () {
00019         return thisSize()==0;
00020     }
00021 
00022     virtual unsigned Length () {
00023         return thisSize();
00024     }
00025 
00026     virtual t_uchar GetUChar (unsigned idx) ;
00027     virtual char GetChar (unsigned idx) {
00028         return (char)GetUChar(idx);
00029     }
00030 
00031     virtual char* Str () ;
00032     virtual t_uchar* UStr () ;
00033 
00034     virtual int MinimumStorageSize () {
00035         return -1;
00036     }
00037     virtual int MaximumStorageSize () {
00038         return -1;
00039     }
00040 
00041     // Set methods
00042     virtual void Reset () ;
00043     virtual void SetEmpty () ;
00044     void Set (char* s) ;
00045     void Set (t_uchar* s) ;
00046     void Set (int v) ;
00047     void Set (unsigned v) ;
00048 
00049     unsigned Add (char c) ;
00050     unsigned Add (t_uchar c) ;
00051     unsigned Add (char* s) ;
00052     unsigned Add (t_uchar* s) ;
00053     unsigned Add (int v) ;
00054     unsigned Add (unsigned v) ;
00055 
00056     virtual void UpString () ;
00057     virtual void DownString () ;
00058 
00059     // Operators
00060     t_uchar& operator[] (int index) ;
00061 
00062     // Save/etc methods
00063     virtual t_uchar* ToString (t_uchar* uBuf) ;
00064     virtual bool SaveGuts (FILE* f) ;
00065     virtual bool RestoreGuts (FILE* f) ;
00066 
00067 protected:
00068     gStringGeneric (eStorage kind,
00069                     eStrStrategy aStgy,
00070                     t_uchar* s,
00071                     unsigned aMaxSize) ;
00072 
00073     unsigned size, preMaxSize, maxSize;
00074     eStrStrategy stgy;
00075     t_uchar* str;
00076     bool doRevalidateSize;
00077     static t_uchar myChrNul;
00078 
00079     // Protected methods
00080     void thisPreAllocate (t_uchar* s, unsigned toSize) ;
00081     void thisDelete () ;
00082     int thisCopy (t_uchar* s, unsigned len) ;
00083     bool thisIndex (unsigned& idx) ;
00084     bool thisIsValidIndex (int index) ;
00085     virtual unsigned thisSize () ;
00086 
00087 private:
00088     // Operators,empty
00089     gStringGeneric (gStringGeneric& ) ;
00090     gStringGeneric& operator= (gStringGeneric& ) ;
00091 };
00092 ////////////////////////////////////////////////////////////
00093 class gString : public gStringGeneric {
00094 public:
00095     gString () ;
00096     gString (gString& copy) ;
00097     gString (char* s) ;
00098     gString (t_uchar* s) ;
00099     gString (char c) ;
00100     gString (unsigned nBytes, char c) ;
00101     virtual ~gString () ;
00102 
00103     // Get methods
00104     bool Match (gString& copy, bool doIgnoreCase=false) ;
00105     bool Match (char* s, bool doIgnoreCase=false) ;
00106 
00107     unsigned Find (gString& sSub, bool doIgnoreCase=false) ;
00108     unsigned Find (char* s, bool doIgnoreCase=false) ;
00109     unsigned Find (char c, bool doIgnoreCase=false) ;
00110 
00111     unsigned Find (gString& sSub, unsigned& nOcc, bool doIgnoreCase=false) ;
00112     unsigned Find (char* s, unsigned& nOcc, bool doIgnoreCase=false) ;
00113     unsigned Find (char c, unsigned& nOcc, bool doIgnoreCase=false) ;
00114 
00115     unsigned FindBack (gString& sSub, bool doIgnoreCase=false) ;
00116     unsigned FindBack (char* s, bool doIgnoreCase=false) ;
00117     unsigned FindBack (char c, bool doIgnoreCase=false) ;
00118 
00119     unsigned FindAnyChr (gString& b, bool doIgnoreCase=false) ;
00120     unsigned FindAnyChr (char* s, bool doIgnoreCase=false) ;
00121     unsigned FindAnyChr (gString& b, bool doIgnoreCase, unsigned& posAny) ;
00122     unsigned FindAnyChr (char* s, bool doIgnoreCase, unsigned& posAny) ;
00123 
00124     unsigned FindExcept (gString& sExcept, bool doIgnoreCase=false) ;
00125     unsigned FindExcept (char* s, bool doIgnoreCase=false) ;
00126 
00127     // Set methods
00128     virtual unsigned AddString (gString& a) ;
00129     virtual void Copy (gString& copy) ;
00130 
00131     virtual gString& CopyFromTo (gString& copy, unsigned startPos=0, unsigned endPos=0) ;
00132     virtual gString& CopyFromToStr (char* s, unsigned startPos=0, unsigned endPos=0) {
00133         gString copy( s );
00134         return CopyFromTo( copy, startPos, endPos );
00135     }
00136 
00137     virtual unsigned Delete (unsigned startPos=0, unsigned endPos=0) ;
00138 
00139     virtual unsigned Insert (gString& copy, unsigned startPos=0) ;
00140     virtual unsigned InsertStr (char* s, unsigned startPos=0) {
00141         gString copy( s );
00142         return Insert( copy, startPos );
00143     }
00144 
00145     virtual bool Trim () ;
00146     virtual bool TrimLeft () ;
00147     virtual bool TrimRight () ;
00148 
00149     // Operators
00150     gString& operator= (gString& copy) ;
00151     gString& operator= (char* s) ;
00152     gString& operator= (char c) ;
00153     gString& operator= (int v) ;
00154 
00155     gString& operator+ (gString& copy) ;
00156 
00157     gString& operator+= (gString& copy) ;
00158 
00159     // Save/etc methods
00160     virtual gStorage* NewObject () ;
00161     virtual t_uchar* ToString (t_uchar* uBuf) ;
00162     virtual bool SaveGuts (FILE* f) ;
00163     virtual bool RestoreGuts (FILE* f) ;
00164 
00165     // Show methods
00166     virtual void Show (bool doShowAll=true) ;
00167 
00168 protected:
00169     // Other methods
00170     int thisMatch (char* s1, char* s2, bool doIgnoreCase) ;
00171 
00172     unsigned thisFind (char* s,
00173                        char* sub,
00174                        unsigned startPos,
00175                        bool doIgnoreCase) ;
00176 
00177     unsigned thisFindAny (char* s,
00178                           char* strAny,
00179                           bool doIgnoreCase,
00180                           unsigned& posAny) ;
00181 
00182     unsigned thisFindFwd (char* s,
00183                           char* sub,
00184                           unsigned startPos,
00185                           bool doIgnoreCase,
00186                           unsigned& nOcc) ;
00187 
00188     unsigned thisFindFwdOcc (char* s,
00189                              char* sub,
00190                              unsigned& nOcc) ;
00191 
00192     unsigned thisFindBack (char* s,
00193                            char* sub,
00194                            unsigned startPos,
00195                            bool doIgnoreCase,
00196                            unsigned& nOcc) ;
00197 
00198     unsigned thisFindBackOcc (char* s,
00199                               char* sub,
00200                               unsigned& nOcc) ;
00201 
00202     unsigned thisFindExcept (char* s,
00203                              char* exceptStr,
00204                              unsigned startPos,
00205                              bool doIgnoreCase) ;
00206 
00207 private:
00208     // Operators,empty
00209     gString (gStringGeneric& ) ; //empty
00210 };
00211 ////////////////////////////////////////////////////////////
00212 #endif //gSTRING_X_H
00213 

Generated on Sat Aug 18 02:40:58 2007 for xpfweb_v2x lib by  doxygen 1.4.2