diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-01-29 22:47:43 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-01-29 22:47:43 +0000 |
commit | 7e214c2b8977d5a19edf5f4ec6b059bd6ec9626d (patch) | |
tree | 91f3b5eee7fd895a75849a83823f10e68324fcc2 | |
parent | 0a702fc59fb9a76724dbacbefab704120322d721 (diff) | |
download | libbu++-7e214c2b8977d5a19edf5f4ec6b059bd6ec9626d.tar.gz libbu++-7e214c2b8977d5a19edf5f4ec6b059bd6ec9626d.tar.bz2 libbu++-7e214c2b8977d5a19edf5f4ec6b059bd6ec9626d.tar.xz libbu++-7e214c2b8977d5a19edf5f4ec6b059bd6ec9626d.zip |
Added another new helper to Hash.
Diffstat (limited to '')
-rw-r--r-- | src/hash.h | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -160,13 +160,53 @@ public: | |||
160 | aKeys = ka.allocate( nCapacity ); | 160 | aKeys = ka.allocate( nCapacity ); |
161 | aValues = va.allocate( nCapacity ); | 161 | aValues = va.allocate( nCapacity ); |
162 | 162 | ||
163 | for( uint32_t j = 0; j < src.nCapacity; j++ ) | ||
164 | { | ||
165 | if( src.isFilled( j ) ) | ||
166 | { | ||
167 | insert( src.aKeys[j], src.aValues[j] ); | ||
168 | } | ||
169 | } | ||
170 | } | ||
171 | |||
172 | Hash &operator=( const Hash &src ) | ||
173 | { | ||
163 | for( uint32_t j = 0; j < nCapacity; j++ ) | 174 | for( uint32_t j = 0; j < nCapacity; j++ ) |
164 | { | 175 | { |
176 | if( isFilled( j ) ) | ||
177 | if( !isDeleted( j ) ) | ||
178 | { | ||
179 | va.destroy( &aValues[j] ); | ||
180 | ka.destroy( &aKeys[j] ); | ||
181 | } | ||
182 | } | ||
183 | va.deallocate( aValues, nCapacity ); | ||
184 | ka.deallocate( aKeys, nCapacity ); | ||
185 | ca.deallocate( bFilled, nKeysSize ); | ||
186 | ca.deallocate( bDeleted, nKeysSize ); | ||
187 | ca.deallocate( aHashCodes, nCapacity ); | ||
188 | |||
189 | nFilled = 0; | ||
190 | nDeleted = 0; | ||
191 | nCapacity = src.nCapacity; | ||
192 | nKeysSize = bitsToBytes( nCapacity ); | ||
193 | bFilled = ca.allocate( nKeysSize ); | ||
194 | bDeleted = ca.allocate( nKeysSize ); | ||
195 | clearBits(); | ||
196 | |||
197 | aHashCodes = ca.allocate( nCapacity ); | ||
198 | aKeys = ka.allocate( nCapacity ); | ||
199 | aValues = va.allocate( nCapacity ); | ||
200 | |||
201 | for( uint32_t j = 0; j < src.nCapacity; j++ ) | ||
202 | { | ||
165 | if( src.isFilled( j ) ) | 203 | if( src.isFilled( j ) ) |
166 | { | 204 | { |
167 | insert( src.aKeys[j], src.aValues[j] ); | 205 | insert( src.aKeys[j], src.aValues[j] ); |
168 | } | 206 | } |
169 | } | 207 | } |
208 | |||
209 | return *this; | ||
170 | } | 210 | } |
171 | 211 | ||
172 | virtual ~Hash() | 212 | virtual ~Hash() |