summaryrefslogtreecommitdiff
path: root/src/hash.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash.h')
-rw-r--r--src/hash.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/hash.h b/src/hash.h
index 1ae68b8..c65b20d 100644
--- a/src/hash.h
+++ b/src/hash.h
@@ -141,6 +141,34 @@ public:
141 aValues = va.allocate( nCapacity ); 141 aValues = va.allocate( nCapacity );
142 } 142 }
143 143
144 Hash( const Hash &src ) :
145 nCapacity( src.nCapacity ),
146 nFilled( 0 ),
147 nDeleted( 0 ),
148 bFilled( NULL ),
149 bDeleted( NULL ),
150 aKeys( NULL ),
151 aValues( NULL ),
152 aHashCodes( NULL )
153 {
154 nKeysSize = bitsToBytes( nCapacity );
155 bFilled = ca.allocate( nKeysSize );
156 bDeleted = ca.allocate( nKeysSize );
157 clearBits();
158
159 aHashCodes = ca.allocate( nCapacity );
160 aKeys = ka.allocate( nCapacity );
161 aValues = va.allocate( nCapacity );
162
163 for( uint32_t j = 0; j < nCapacity; j++ )
164 {
165 if( src.isFilled( j ) )
166 {
167 insert( src.aKeys[j], src.aValues[j] );
168 }
169 }
170 }
171
144 virtual ~Hash() 172 virtual ~Hash()
145 { 173 {
146 for( uint32_t j = 0; j < nCapacity; j++ ) 174 for( uint32_t j = 0; j < nCapacity; j++ )
@@ -502,7 +530,7 @@ protected:
502 ca.deallocate( aOldHashCodes, nOldCapacity ); 530 ca.deallocate( aOldHashCodes, nOldCapacity );
503 } 531 }
504 532
505 virtual bool isFilled( uint32_t loc ) 533 virtual bool isFilled( uint32_t loc ) const
506 { 534 {
507 return (bFilled[loc/32]&(1<<(loc%32)))!=0; 535 return (bFilled[loc/32]&(1<<(loc%32)))!=0;
508 } 536 }