/[pearpc]/src/tools/str.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /src/tools/str.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Wed Sep 5 17:11:21 2007 UTC (11 years, 10 months ago) by dpavlin
File MIME type: text/plain
File size: 7501 byte(s)
import upstream CVS
1 /*
2 * HT Editor
3 * str.h
4 *
5 * Copyright (C) 2002 Stefan Weyergraf
6 * Copyright (C) 2002, 2003 Sebastian Biallas (sb@biallas.net)
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22 #ifndef __STR_H__
23 #define __STR_H__
24
25 #include "data.h"
26
27 enum StringCase {
28 stringCaseLower,
29 stringCaseUpper,
30 stringCaseCaps
31 };
32
33 /**
34 * Class for easy string handling.
35 */
36 class String: public Object {
37 protected:
38 int mLength;
39 byte *mContent;
40 public:
41 String();
42 String(const char *s);
43 String(const String *s);
44 String(const String &s);
45 String(const byte *s, int aLength);
46 String(char c, int count = 1);
47 virtual ~String();
48
49 void assign(const String *s);
50 void assign(const String &s);
51 void assign(const char *s);
52 void assign(const byte *s, int aLength);
53 void assign(char c, int count = 1);
54 void assignFormat(const char *s, ...);
55
56 void append(const String &s);
57 void append(const char *s);
58 void appendChar(char c);
59 inline char & at(int aIndex) const;
60 inline bool chop();
61 void clear();
62 virtual String * clone() const;
63 virtual int compareChar(char c1, char c2) const;
64 virtual int compareTo(const Object *o) const;
65 int compare(const String &s) const;
66 int compare(const String &s, int aMax) const;
67 inline byte * content() const;
68 inline char * contentChar() const;
69 void crop(int aNewLength);
70 void del(int pos, int aLength);
71 void escape(const char *aSpecialChars, bool bit7 = true);
72 virtual int findFirstChar(char c, int start = -1) const;
73 virtual int findFirstString(const String &s, int start = -1) const;
74 virtual int findLastChar(char c, int start = -1) const;
75 virtual int findLastString(const String &s, int start = -1) const;
76 inline char firstChar() const;
77 void insert(const String &s, int pos);
78 #ifdef HAVE_HT_OBJECTS
79 virtual bool instanceOf(ObjectID id) const;
80 inline bool isEmpty() const;
81 virtual ObjectID getObjectID() const;
82 #endif
83 inline char lastChar() const;
84 inline int length() const;
85 bool leftSplit(char chr, String &initial, String &rem) const;
86 void prepend(const String &s);
87 // bool regexMatch(const String &aRegEx, Container *resultStrings = NULL, int maxRegExMatches = 32) const;
88 // bool regexReplace(const String &aRegEx, Container *resultStrings = NULL) const;
89 int replace(const String &what, const String &with, int start = 0, int maxReplacements = -1);
90 bool rightSplit(char chr, String &initial, String &rem) const;
91 int subString(int aStart, int aLength, String &result) const;
92 void transformCase(StringCase c);
93 void translate(const String &inAlpha, const String &outAlpha);
94 virtual int toArray(byte *buf, int buflen) const;
95 bool toInt(int &i, int defaultbase=10) const;
96 bool toInt32(uint32 &u32, int defaultbase=10) const;
97 bool toInt64(uint64 &u64, int defaultbase=10) const;
98 virtual int toString(char *buf, int buflen) const;
99 virtual char * toString() const;
100 void unescape();
101
102 inline char & operator [](int aIndex) const;
103
104 inline String & operator =(const String &s);
105 inline String & operator =(const char *s);
106 inline String & operator +=(const String &s);
107 inline String & operator +=(const char *s);
108 String & operator +=(char c);
109
110 inline bool operator < (const String &s) const;
111 inline bool operator > (const String &s) const;
112 inline bool operator <=(const String &s) const;
113 inline bool operator >=(const String &s) const;
114 inline bool operator ==(const String &s) const;
115 inline bool operator !=(const String &s) const;
116
117 inline bool operator < (const char *s) const;
118 inline bool operator > (const char *s) const;
119 inline bool operator <=(const char *s) const;
120 inline bool operator >=(const char *s) const;
121 inline bool operator ==(const char *s) const;
122 inline bool operator !=(const char *s) const;
123
124 protected:
125 int compare(const char *s) const;
126 void realloc(int aNewSize);
127 };
128
129 String operator +(const String &s1, const String &s2);
130 String operator +(const char *s1, const String &s2);
131
132 /**
133 * case-insensitive string.
134 */
135 class IString: public String {
136 public:
137 IString();
138
139 virtual IString * clone() const;
140 virtual int compareChar(char c1, char c2) const;
141 #ifdef HAVE_HT_OBJECTS
142 virtual bool instanceOf(ObjectID id) const;
143 virtual ObjectID getObjectID() const;
144 #endif
145 };
146
147 /*
148 * inline functions
149 */
150
151 //class MsgException;
152
153 /**
154 * @returns char at position |aIndex|
155 * @throws exception if aIndex out of bounds
156 */
157 inline char &String::at(int aIndex) const
158 {
159 // if ((uint)aIndex >= (uint)mLength) throw new MsgException("index out of bounds");
160 return (char &)mContent[aIndex];
161 }
162
163 /**
164 * Removes the last character of the string if string length is non-zero.
165 */
166 inline bool String::chop()
167 {
168 if (mLength) {
169 crop(mLength-1);
170 return true;
171 } else {
172 return false;
173 }
174 }
175
176 /**
177 * @returns a string content ptr
178 */
179 inline byte *String::content() const
180 {
181 return mContent;
182 }
183
184 /**
185 * @returns a string content ptr (as char*)
186 */
187 inline char *String::contentChar() const
188 {
189 return (char*)mContent;
190 }
191
192 /**
193 * @returns first character of string
194 * @throws exception if string is empty
195 */
196 inline char String::firstChar() const
197 {
198 return at(0);
199 }
200
201 /**
202 * @returns true if string is empty.
203 */
204 inline bool String::isEmpty() const
205 {
206 return mLength == 0;
207 }
208
209 /**
210 * @returns last character of string
211 * @throws exception if string is empty
212 */
213 inline char String::lastChar() const
214 {
215 return at(mLength-1);
216 }
217
218 /**
219 * @returns length of string
220 */
221 inline int String::length() const
222 {
223 return mLength;
224 }
225
226 inline char &String::operator [](int aIndex) const
227 {
228 return at(aIndex);
229 }
230
231 inline String &String::operator =(const String &s)
232 {
233 assign(s);
234 return *this;
235 }
236
237 inline String &String::operator =(const char *s)
238 {
239 assign(s);
240 return *this;
241 }
242
243 inline String &String::operator +=(const String &s)
244 {
245 append(s);
246 return *this;
247 }
248
249 inline String &String::operator +=(const char *s)
250 {
251 append(s);
252 return *this;
253 }
254
255 inline bool String::operator < (const String &s) const
256 {
257 return compare(s) < 0;
258 }
259
260 inline bool String::operator <= (const String &s) const
261 {
262 return compare(s) <= 0;
263 }
264
265 inline bool String::operator > (const String &s) const
266 {
267 return compare(s) > 0;
268 }
269
270 inline bool String::operator >= (const String &s) const
271 {
272 return compare(s) >= 0;
273 }
274
275 inline bool String::operator == (const String &s) const
276 {
277 return compare(s) == 0;
278 }
279
280 inline bool String::operator != (const String &s) const
281 {
282 return compare(s) != 0;
283 }
284
285 inline bool String::operator < (const char *s) const
286 {
287 return compare(s) < 0;
288 }
289
290 inline bool String::operator <= (const char *s) const
291 {
292 return compare(s) <= 0;
293 }
294
295 inline bool String::operator > (const char *s) const
296 {
297 return compare(s) > 0;
298 }
299
300 inline bool String::operator >= (const char *s) const
301 {
302 return compare(s) >= 0;
303 }
304
305 inline bool String::operator == (const char *s) const
306 {
307 return compare(s) == 0;
308 }
309
310 inline bool String::operator != (const char *s) const
311 {
312 return compare(s) != 0;
313 }
314
315 #endif

  ViewVC Help
Powered by ViewVC 1.1.26