diff options
| -rw-r--r-- | src/fstring.h | 67 | ||||
| -rw-r--r-- | src/hash.h | 10 |
2 files changed, 77 insertions, 0 deletions
diff --git a/src/fstring.h b/src/fstring.h index 2f7dc67..f0462cb 100644 --- a/src/fstring.h +++ b/src/fstring.h | |||
| @@ -76,6 +76,33 @@ public: | |||
| 76 | //copyFrom( rSrc ); | 76 | //copyFrom( rSrc ); |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | FBasicString( const MyType &rSrc, long nLength ) : | ||
| 80 | nLength( 0 ), | ||
| 81 | pnRefs( NULL ), | ||
| 82 | pFirst( NULL ), | ||
| 83 | pLast( NULL ) | ||
| 84 | { | ||
| 85 | append( rSrc.pFirst->pData, nLength ); | ||
| 86 | } | ||
| 87 | |||
| 88 | FBasicString( const MyType &rSrc, long nStart, long nLength ) : | ||
| 89 | nLength( 0 ), | ||
| 90 | pnRefs( NULL ), | ||
| 91 | pFirst( NULL ), | ||
| 92 | pLast( NULL ) | ||
| 93 | { | ||
| 94 | append( rSrc.pFirst->pData+nStart, nLength ); | ||
| 95 | } | ||
| 96 | |||
| 97 | FBasicString( long nSize ) : | ||
| 98 | nLength( nSize ), | ||
| 99 | pnRefs( NULL ), | ||
| 100 | pFirst( NULL ), | ||
| 101 | pLast( NULL ) | ||
| 102 | { | ||
| 103 | pFirst = pLast = newChunk( nSize ); | ||
| 104 | } | ||
| 105 | |||
| 79 | virtual ~FBasicString() | 106 | virtual ~FBasicString() |
| 80 | { | 107 | { |
| 81 | clear(); | 108 | clear(); |
| @@ -190,6 +217,14 @@ public: | |||
| 190 | 217 | ||
| 191 | return (*this); | 218 | return (*this); |
| 192 | } | 219 | } |
| 220 | |||
| 221 | MyType &operator +=( const MyType &rSrc ) | ||
| 222 | { | ||
| 223 | rSrc.flatten(); | ||
| 224 | append( rSrc.pFirst->pData, rSrc.nLength ); | ||
| 225 | |||
| 226 | return (*this); | ||
| 227 | } | ||
| 193 | 228 | ||
| 194 | MyType &operator +=( const chr pData ) | 229 | MyType &operator +=( const chr pData ) |
| 195 | { | 230 | { |
| @@ -294,6 +329,38 @@ public: | |||
| 294 | || pFirst->pData[nIndex]=='\r' || pFirst->pData[nIndex]=='\n'; | 329 | || pFirst->pData[nIndex]=='\r' || pFirst->pData[nIndex]=='\n'; |
| 295 | } | 330 | } |
| 296 | 331 | ||
| 332 | bool isAlpha( long nIndex ) const | ||
| 333 | { | ||
| 334 | flatten(); | ||
| 335 | |||
| 336 | return (pFirst->pData[nIndex] >= 'a' && pFirst->pData[nIndex] <= 'z') | ||
| 337 | || (pFirst->pData[nIndex] >= 'A' && pFirst->pData[nIndex] <= 'Z'); | ||
| 338 | } | ||
| 339 | |||
| 340 | void toLower() | ||
| 341 | { | ||
| 342 | flatten(); | ||
| 343 | unShare(); | ||
| 344 | |||
| 345 | for( long j = 0; j < nLength; j++ ) | ||
| 346 | { | ||
| 347 | if( pFirst->pData[j] >= 'A' && pFirst->pData[j] <= 'Z' ) | ||
| 348 | pFirst->pData[j] -= 'A'-'a'; | ||
| 349 | } | ||
| 350 | } | ||
| 351 | |||
| 352 | void toUpper() | ||
| 353 | { | ||
| 354 | flatten(); | ||
| 355 | unShare(); | ||
| 356 | |||
| 357 | for( long j = 0; j < nLength; j++ ) | ||
| 358 | { | ||
| 359 | if( pFirst->pData[j] >= 'a' && pFirst->pData[j] <= 'z' ) | ||
| 360 | pFirst->pData[j] += 'A'-'a'; | ||
| 361 | } | ||
| 362 | } | ||
| 363 | |||
| 297 | void serialize( class Serializer &ar ) | 364 | void serialize( class Serializer &ar ) |
| 298 | { | 365 | { |
| 299 | if( ar.isLoading() ) | 366 | if( ar.isLoading() ) |
| @@ -119,6 +119,16 @@ public: | |||
| 119 | 119 | ||
| 120 | return nval; | 120 | return nval; |
| 121 | } | 121 | } |
| 122 | |||
| 123 | _value *operator->() | ||
| 124 | { | ||
| 125 | if( bFilled == false ) | ||
| 126 | throw HashException( | ||
| 127 | excodeNotFilled, | ||
| 128 | "No data assosiated with that key." | ||
| 129 | ); | ||
| 130 | return pValue; | ||
| 131 | } | ||
| 122 | }; | 132 | }; |
| 123 | 133 | ||
| 124 | template<typename key, typename value, typename sizecalc, typename keyalloc, typename valuealloc, typename challoc > | 134 | template<typename key, typename value, typename sizecalc, typename keyalloc, typename valuealloc, typename challoc > |
