00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CS_IUTIL_STRING_H__
00021 #define __CS_IUTIL_STRING_H__
00022
00028 #include <stdarg.h>
00029 #include "csutil/scf.h"
00030
00031 SCF_VERSION (iString, 0, 1, 0);
00032
00034 struct iString : public iBase
00035 {
00043 virtual void SetCapacity (size_t NewSize) = 0;
00045 virtual size_t GetCapacity () const = 0;
00046
00053 virtual void SetGrowsBy(size_t) = 0;
00055 virtual size_t GetGrowsBy() const = 0;
00056
00061 virtual void SetGrowsExponentially(bool) = 0;
00062
00064 virtual bool GetGrowsExponentially() const = 0;
00065
00067 virtual void Truncate (size_t iPos) = 0;
00068
00070 virtual void Reclaim () = 0;
00071
00073 inline void Clear ()
00074 { Truncate (0); }
00075
00077 virtual iString *Clone () const = 0;
00078
00080 virtual char *GetData () const = 0;
00081
00083 virtual size_t Length () const = 0;
00084
00086 inline bool IsEmpty () const
00087 { return !Length (); }
00088
00090 virtual inline char& operator [] (size_t iPos) = 0;
00091
00093 virtual void SetAt (size_t iPos, char iChar) = 0;
00094
00096 virtual char GetAt (size_t iPos) const = 0;
00097
00099 virtual void Insert (size_t iPos, iString *iStr) = 0;
00100
00102 virtual void Overwrite (size_t iPos, iString *iStr) = 0;
00103
00105 virtual iString &Append (const char *iStr, size_t iCount = (size_t)-1) = 0;
00106
00108 virtual iString &Append (const iString *iStr, size_t iCount = (size_t)-1)=0;
00109
00114 virtual void SubString (iString * sub, size_t start, size_t len) = 0;
00115
00117
00120 virtual size_t FindFirst (const char c, size_t p = (size_t)-1) = 0;
00122
00125 virtual size_t FindLast (const char c, size_t p = (size_t)-1) = 0;
00126
00132 virtual void Format (const char *format, ...) CS_GNUC_PRINTF (2, 3) = 0;
00133
00139 virtual void FormatV (const char *format, va_list args) = 0;
00140
00142 virtual void Replace (const iString *iStr, size_t iCount = (size_t)-1) = 0;
00143
00145 virtual bool Compare (const iString *iStr) const = 0;
00146
00148 virtual bool CompareNoCase (const iString *iStr) const = 0;
00149
00151 iString &operator += (const iString &iStr)
00152 { return Append (&iStr); }
00153
00155 iString &operator += (const char *iStr)
00156 { return Append (iStr); }
00157
00159 iString &operator + (const iString &iStr) const
00160 { return Clone ()->Append (&iStr); }
00161
00163 operator const char * () const
00164 { return GetData (); }
00165
00167 bool operator == (const iString &iStr) const
00168 { return Compare (&iStr); }
00169 };
00170
00173 #endif // __CS_IUTIL_STRING_H__