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 > |