summaryrefslogtreecommitdiff
path: root/src/hash.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash.h')
-rw-r--r--src/hash.h26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/hash.h b/src/hash.h
index f06c40f..e717c60 100644
--- a/src/hash.h
+++ b/src/hash.h
@@ -55,7 +55,7 @@ namespace Bu
55 { 55 {
56 friend class Hash<key, _value, sizecalc, keyalloc, valuealloc, challoc>; 56 friend class Hash<key, _value, sizecalc, keyalloc, valuealloc, challoc>;
57 private: 57 private:
58 HashProxy( Hash<key, _value, sizecalc, keyalloc, valuealloc, challoc> &h, key *k, uint32_t nPos, uint32_t hash ) : 58 HashProxy( Hash<key, _value, sizecalc, keyalloc, valuealloc, challoc> &h, const key *k, uint32_t nPos, uint32_t hash ) :
59 hsh( h ), 59 hsh( h ),
60 pKey( k ), 60 pKey( k ),
61 nPos( nPos ), 61 nPos( nPos ),
@@ -73,7 +73,7 @@ namespace Bu
73 } 73 }
74 74
75 Hash<key, _value, sizecalc, keyalloc, valuealloc, challoc> &hsh; 75 Hash<key, _value, sizecalc, keyalloc, valuealloc, challoc> &hsh;
76 key *pKey; 76 const key *pKey;
77 uint32_t nPos; 77 uint32_t nPos;
78 _value *pValue; 78 _value *pValue;
79 uint32_t hash; 79 uint32_t hash;
@@ -151,8 +151,8 @@ namespace Bu
151 { 151 {
152 if( bFilled ) 152 if( bFilled )
153 { 153 {
154 hsh.va.destroy( pValue ); 154 hsh.va.destroy( &hsh.aValues[nPos] );
155 hsh.va.construct( pValue, nval ); 155 hsh.va.construct( &hsh.aValues[nPos], nval );
156 hsh.onUpdate(); 156 hsh.onUpdate();
157 } 157 }
158 else 158 else
@@ -380,7 +380,7 @@ namespace Bu
380 *@param k (key_type) Key of data to be retrieved. 380 *@param k (key_type) Key of data to be retrieved.
381 *@returns (HashProxy) Proxy pointing to the data. 381 *@returns (HashProxy) Proxy pointing to the data.
382 */ 382 */
383 virtual HashProxy<key, value, sizecalc, keyalloc, valuealloc, challoc> operator[]( key k ) 383 virtual HashProxy<key, value, sizecalc, keyalloc, valuealloc, challoc> operator[]( const key &k )
384 { 384 {
385 uint32_t hash = __calcHashCode( k ); 385 uint32_t hash = __calcHashCode( k );
386 bool bFill; 386 bool bFill;
@@ -401,7 +401,7 @@ namespace Bu
401 *@param k (key_type) Key to list the value under. 401 *@param k (key_type) Key to list the value under.
402 *@param v (value_type) Value to store in the hash table. 402 *@param v (value_type) Value to store in the hash table.
403 */ 403 */
404 virtual void insert( key k, value v ) 404 virtual void insert( const key &k, const value &v )
405 { 405 {
406 uint32_t hash = __calcHashCode( k ); 406 uint32_t hash = __calcHashCode( k );
407 bool bFill; 407 bool bFill;
@@ -424,7 +424,7 @@ namespace Bu
424 * Remove a value from the hash table. 424 * Remove a value from the hash table.
425 *@param k (key_type) The data under this key will be erased. 425 *@param k (key_type) The data under this key will be erased.
426 */ 426 */
427 virtual void erase( key k ) 427 virtual void erase( const key &k )
428 { 428 {
429 uint32_t hash = __calcHashCode( k ); 429 uint32_t hash = __calcHashCode( k );
430 bool bFill; 430 bool bFill;
@@ -477,7 +477,7 @@ namespace Bu
477 *@param k (key_type) Key pointing to the data to be retrieved. 477 *@param k (key_type) Key pointing to the data to be retrieved.
478 *@returns (value_type &) The data pointed to by (k). 478 *@returns (value_type &) The data pointed to by (k).
479 */ 479 */
480 virtual value &get( key k ) 480 virtual value &get( const key &k )
481 { 481 {
482 uint32_t hash = __calcHashCode( k ); 482 uint32_t hash = __calcHashCode( k );
483 bool bFill; 483 bool bFill;
@@ -502,7 +502,7 @@ namespace Bu
502 *@returns (const value_type &) A const version of the data pointed 502 *@returns (const value_type &) A const version of the data pointed
503 * to by (k). 503 * to by (k).
504 */ 504 */
505 virtual const value &get( key k ) const 505 virtual const value &get( const key &k ) const
506 { 506 {
507 uint32_t hash = __calcHashCode( k ); 507 uint32_t hash = __calcHashCode( k );
508 bool bFill; 508 bool bFill;
@@ -526,7 +526,7 @@ namespace Bu
526 *@param k (key_type) The key to check. 526 *@param k (key_type) The key to check.
527 *@returns (bool) Whether there was an item in the hash under key (k). 527 *@returns (bool) Whether there was an item in the hash under key (k).
528 */ 528 */
529 virtual bool has( key k ) 529 virtual bool has( const key &k )
530 { 530 {
531 bool bFill; 531 bool bFill;
532 probe( __calcHashCode( k ), k, bFill, false ); 532 probe( __calcHashCode( k ), k, bFill, false );
@@ -534,7 +534,7 @@ namespace Bu
534 return bFill; 534 return bFill;
535 } 535 }
536 536
537 virtual bool has( key k ) const 537 virtual bool has( const key &k ) const
538 { 538 {
539 bool bFill; 539 bool bFill;
540 probe( __calcHashCode( k ), k, bFill ); 540 probe( __calcHashCode( k ), k, bFill );
@@ -873,7 +873,7 @@ namespace Bu
873 } 873 }
874 } 874 }
875 875
876 virtual void fill( uint32_t loc, key &k, value &v, uint32_t hash ) 876 virtual void fill( uint32_t loc, const key &k, const value &v, uint32_t hash )
877 { 877 {
878 bFilled[loc/32] |= (1<<(loc%32)); 878 bFilled[loc/32] |= (1<<(loc%32));
879 va.construct( &aValues[loc], v ); 879 va.construct( &aValues[loc], v );
@@ -945,7 +945,7 @@ namespace Bu
945 return 0; 945 return 0;
946 } 946 }
947 947
948 uint32_t probe( uint32_t hash, key k, bool &bFill, bool rehash=true ) 948 uint32_t probe( uint32_t hash, const key &k, bool &bFill, bool rehash=true )
949 { 949 {
950 uint32_t nCur = hash%nCapacity; 950 uint32_t nCur = hash%nCapacity;
951 951