00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef FXSTRING_H
00025
#define FXSTRING_H
00026
00027
namespace FX {
00028
00029
00030
00031
00032
00033 class FXAPI FXString {
00034
private:
00035 FXchar* str;
00036
public:
00037
static const FXchar null[];
00038
static const FXchar hex[17];
00039
static const FXchar HEX[17];
00040
public:
00041
00042
00043 FXString();
00044
00045
00046 FXString(
const FXString& s);
00047
00048
00049 FXString(
const FXchar* s);
00050
00051
00052 FXString(
const FXchar* s,FXint n);
00053
00054
00055 FXString(FXchar c,FXint n);
00056
00057
00058 FXString(
const FXchar* s1,
const FXchar* s2);
00059
00060
00061
void length(FXint len);
00062
00063
00064 FXint length()
const {
return ((FXint*)str)[-1]; }
00065
00066
00067
const FXchar* text()
const {
return (
const FXchar*)str; }
00068
00069
00070 FXbool empty()
const {
return (((FXint*)str)[-1]==0); }
00071
00072
00073 FXchar& operator[](FXint i){
return str[i]; }
00074
00075
00076
const FXchar& operator[](FXint i)
const {
return str[i]; }
00077
00078
00079 FXString& operator=(
const FXString& s);
00080
00081
00082 FXString& operator=(
const FXchar* s);
00083
00084
00085 FXString& fill(FXchar c,FXint n);
00086
00087
00088 FXString& fill(FXchar c);
00089
00090
00091 FXString& lower();
00092
00093
00094 FXString& upper();
00095
00096
00097 FXString section(FXchar delim,FXint start,FXint num=1)
const;
00098
00099
00100 FXString section(
const FXchar* delim,FXint n,FXint start,FXint num)
const;
00101
00102
00103 FXString section(
const FXchar* delim,FXint start,FXint num=1)
const;
00104
00105
00106 FXString section(
const FXString& delim,FXint start,FXint num=1)
const;
00107
00108
00109 FXString& assign(FXchar c);
00110
00111
00112 FXString& assign(FXchar c,FXint n);
00113
00114
00115 FXString& assign(
const FXchar *s,FXint n);
00116
00117
00118 FXString& assign(
const FXString& s);
00119
00120
00121 FXString& assign(
const FXchar* s);
00122
00123
00124 FXString& insert(FXint pos,FXchar c);
00125
00126
00127 FXString& insert(FXint pos,FXchar c,FXint n);
00128
00129
00130 FXString& insert(FXint pos,
const FXchar* s,FXint n);
00131
00132
00133 FXString& insert(FXint pos,
const FXString& s);
00134
00135
00136 FXString& insert(FXint pos,
const FXchar* s);
00137
00138
00139 FXString& prepend(FXchar c);
00140
00141
00142 FXString& prepend(FXchar c,FXint n);
00143
00144
00145 FXString& prepend(
const FXchar* s,FXint n);
00146
00147
00148 FXString& prepend(
const FXString& s);
00149
00150
00151 FXString& prepend(
const FXchar* s);
00152
00153
00154 FXString& append(FXchar c);
00155
00156
00157 FXString& append(FXchar c,FXint n);
00158
00159
00160 FXString& append(
const FXchar* s,FXint n);
00161
00162
00163 FXString& append(
const FXString& s);
00164
00165
00166 FXString& append(
const FXchar* s);
00167
00168
00169 FXString& replace(FXint pos,FXchar c);
00170
00171
00172 FXString& replace(FXint pos,FXint m,FXchar c,FXint n);
00173
00174
00175 FXString& replace(FXint pos,FXint m,
const FXchar* s,FXint n);
00176
00177
00178 FXString& replace(FXint pos,FXint m,
const FXString& s);
00179
00180
00181 FXString& replace(FXint pos,FXint m,
const FXchar* s);
00182
00183
00184 FXString& remove(FXint pos,FXint n=1);
00185
00186
00187 FXint contains(FXchar ch);
00188
00189
00190 FXint contains(
const FXchar* sub,FXint n);
00191
00192
00193 FXint contains(
const FXchar* sub);
00194
00195
00196 FXint contains(
const FXString& sub);
00197
00198
00199 FXString& substitute(FXchar org,FXchar sub,FXbool all=TRUE);
00200
00201
00202 FXString& substitute(
const FXchar* org,FXint olen,
const FXchar *rep,FXint rlen,FXbool all=TRUE);
00203
00204
00205 FXString& substitute(
const FXchar* org,
const FXchar *rep,FXbool all=TRUE);
00206
00207
00208 FXString& substitute(
const FXString& org,
const FXString& rep,FXbool all=TRUE);
00209
00210
00211 FXString& simplify();
00212
00213
00214 FXString& trim();
00215
00216
00217 FXString& trimBegin();
00218
00219
00220 FXString& trimEnd();
00221
00222
00223 FXString& trunc(FXint pos);
00224
00225
00226 FXString& clear();
00227
00228
00229 FXString left(FXint n)
const;
00230
00231
00232 FXString right(FXint n)
const;
00233
00234
00235 FXString mid(FXint pos,FXint n)
const;
00236
00237
00238
00239
00240
00241
00242
00243 FXString before(FXchar ch,FXint n=1)
const;
00244
00245
00246
00247
00248
00249
00250
00251 FXString rbefore(FXchar ch,FXint n=1)
const;
00252
00253
00254
00255
00256
00257
00258
00259 FXString after(FXchar ch,FXint n=1)
const;
00260
00261
00262
00263
00264
00265
00266
00267 FXString rafter(FXchar ch,FXint n=1)
const;
00268
00269
00270 FXint find(FXchar c,FXint pos=0)
const;
00271
00272
00273 FXint rfind(FXchar c,FXint pos=2147483647)
const;
00274
00275
00276 FXint find(FXchar c,FXint pos,FXint n)
const;
00277
00278
00279 FXint rfind(FXchar c,FXint pos,FXint n)
const;
00280
00281
00282 FXint find(
const FXchar* substr,FXint n,FXint pos)
const;
00283
00284
00285 FXint rfind(
const FXchar* substr,FXint n,FXint pos)
const;
00286
00287
00288 FXint find(
const FXchar* substr,FXint pos=0)
const;
00289
00290
00291 FXint rfind(
const FXchar* substr,FXint pos=2147483647)
const;
00292
00293
00294 FXint find(
const FXString& substr,FXint pos=0)
const;
00295
00296
00297 FXint rfind(
const FXString& substr,FXint pos=2147483647)
const;
00298
00299
00300 FXint find_first_of(
const FXchar* set,FXint n,FXint pos)
const;
00301
00302
00303 FXint find_first_of(
const FXchar* set,FXint pos=0)
const;
00304
00305
00306 FXint find_first_of(
const FXString& set,FXint pos=0)
const;
00307
00308
00309 FXint find_first_of(FXchar c,FXint pos=0)
const;
00310
00311
00312 FXint find_last_of(
const FXchar* set,FXint n,FXint pos)
const;
00313
00314
00315 FXint find_last_of(
const FXchar* set,FXint pos=2147483647)
const;
00316
00317
00318 FXint find_last_of(
const FXString& set,FXint pos=2147483647)
const;
00319
00320
00321 FXint find_last_of(FXchar c,FXint pos=0)
const;
00322
00323
00324 FXint find_first_not_of(
const FXchar* set,FXint n,FXint pos)
const;
00325
00326
00327 FXint find_first_not_of(
const FXchar* set,FXint pos=0)
const;
00328
00329
00330 FXint find_first_not_of(
const FXString& set,FXint pos=0)
const;
00331
00332
00333 FXint find_first_not_of(FXchar c,FXint pos=0)
const;
00334
00335
00336 FXint find_last_not_of(
const FXchar* set,FXint n,FXint pos)
const;
00337
00338
00339 FXint find_last_not_of(
const FXchar* set,FXint pos=2147483647)
const;
00340
00341
00342 FXint find_last_not_of(
const FXString& set,FXint pos=2147483647)
const;
00343
00344
00345 FXint find_last_not_of(FXchar c,FXint pos=0)
const;
00346
00347
00348 FXint count(FXchar c)
const;
00349
00350
00351 FXString& format(
const char* fmt,...) FX_PRINTF(2,3) ;
00352 FXString& vformat(const
char* fmt,va_list args);
00353
00354
00355 FXint scan(const
char* fmt,...) const FX_SCANF(2,3) ;
00356 FXint vscan(const
char* fmt,va_list args) const;
00357
00358
00359 FXuint hash() const;
00360
00361
00362 friend FXAPI FXint compare(const FXchar* s1,const FXchar* s2);
00363 friend FXAPI FXint compare(const FXchar* s1,const FXString& s2);
00364 friend FXAPI FXint compare(const FXString& s1,const FXchar* s2);
00365 friend FXAPI FXint compare(const FXString& s1,const FXString& s2);
00366
00367
00368 friend FXAPI FXint compare(const FXchar* s1,const FXchar* s2,FXint n);
00369 friend FXAPI FXint compare(const FXchar* s1,const FXString& s2,FXint n);
00370 friend FXAPI FXint compare(const FXString& s1,const FXchar* s2,FXint n);
00371 friend FXAPI FXint compare(const FXString& s1,const FXString& s2,FXint n);
00372
00373
00374 friend FXAPI FXint comparecase(const FXchar* s1,const FXchar* s2);
00375 friend FXAPI FXint comparecase(const FXchar* s1,const FXString& s2);
00376 friend FXAPI FXint comparecase(const FXString& s1,const FXchar* s2);
00377 friend FXAPI FXint comparecase(const FXString& s1,const FXString& s2);
00378
00379
00380 friend FXAPI FXint comparecase(const FXchar* s1,const FXchar* s2,FXint n);
00381 friend FXAPI FXint comparecase(const FXchar* s1,const FXString& s2,FXint n);
00382 friend FXAPI FXint comparecase(const FXString& s1,const FXchar* s2,FXint n);
00383 friend FXAPI FXint comparecase(const FXString& s1,const FXString& s2,FXint n);
00384
00385
00386 friend FXAPI FXbool operator==(const FXString& s1,const FXString& s2);
00387 friend FXAPI FXbool operator==(const FXString& s1,const FXchar* s2);
00388 friend FXAPI FXbool operator==(const FXchar* s1,const FXString& s2);
00389
00390 friend FXAPI FXbool operator!=(const FXString& s1,const FXString& s2);
00391 friend FXAPI FXbool operator!=(const FXString& s1,const FXchar* s2);
00392 friend FXAPI FXbool operator!=(const FXchar* s1,const FXString& s2);
00393
00394 friend FXAPI FXbool operator<(const FXString& s1,const FXString& s2);
00395 friend FXAPI FXbool operator<(const FXString& s1,const FXchar* s2);
00396 friend FXAPI FXbool operator<(const FXchar* s1,const FXString& s2);
00397
00398 friend FXAPI FXbool operator<=(const FXString& s1,const FXString& s2);
00399 friend FXAPI FXbool operator<=(const FXString& s1,const FXchar* s2);
00400 friend FXAPI FXbool operator<=(const FXchar* s1,const FXString& s2);
00401
00402 friend FXAPI FXbool operator>(const FXString& s1,const FXString& s2);
00403 friend FXAPI FXbool operator>(const FXString& s1,const FXchar* s2);
00404 friend FXAPI FXbool operator>(const FXchar* s1,const FXString& s2);
00405
00406 friend FXAPI FXbool operator>=(const FXString& s1,const FXString& s2);
00407 friend FXAPI FXbool operator>=(const FXString& s1,const FXchar* s2);
00408 friend FXAPI FXbool operator>=(const FXchar* s1,const FXString& s2);
00409
00410
00411 FXString& operator+=(const FXString& s);
00412 FXString& operator+=(const FXchar* s);
00413 FXString& operator+=(FXchar c);
00414
00415
00416 friend FXAPI FXString operator+(const FXString& s1,const FXString& s2);
00417 friend FXAPI FXString operator+(const FXString& s1,const FXchar* s2);
00418 friend FXAPI FXString operator+(const FXchar* s1,const FXString& s2);
00419
00420
00421 friend FXAPI FXString operator+(const FXString& s,FXchar c);
00422 friend FXAPI FXString operator+(FXchar c,const FXString& s);
00423
00424
00425 friend FXAPI
FXStream& operator<<(
FXStream& store,const FXString& s);
00426
00427
00428 friend FXAPI
FXStream& operator>>(
FXStream& store,FXString& s);
00429
00430
00431 friend FXAPI FXString FXStringFormat(const FXchar* fmt,...) FX_PRINTF(1,2) ;
00432 friend FXAPI FXString FXStringVFormat(const FXchar* fmt,va_list args);
00433
00434
00435
00436
00437
00438 friend FXAPI FXString FXStringVal(FXint num,FXint base=10);
00439 friend FXAPI FXString FXStringVal(FXuint num,FXint base=10);
00440
00441
00442
00443
00444
00445
00446 friend FXAPI FXString FXStringVal(FXfloat num,FXint prec=6,FXbool exp=MAYBE);
00447 friend FXAPI FXString FXStringVal(FXdouble num,FXint prec=6,FXbool exp=MAYBE);
00448
00449
00450 friend FXAPI FXint FXIntVal(const FXString& s,FXint base=10);
00451 friend FXAPI FXuint FXUIntVal(const FXString& s,FXint base=10);
00452
00453
00454 friend FXAPI FXfloat FXFloatVal(const FXString& s);
00455 friend FXAPI FXdouble FXDoubleVal(const FXString& s);
00456
00457
00458 friend FXAPI FXString escape(const FXString& s);
00459
00460
00461 friend FXAPI FXString unescape(const FXString& s);
00462
00463
00464 friend FXAPI
void swap(FXString& a,FXString& b){ FXchar *t=a.str; a.str=b.str; b.str=t; }
00465
00466
00467 ~FXString();
00468 };
00469
00470
00471 }
00472
00473
#endif