diff options
Diffstat (limited to '')
| -rw-r--r-- | src/hash.h | 26 | ||||
| -rw-r--r-- | src/unit/hash.cpp | 4 |
2 files changed, 15 insertions, 15 deletions
| @@ -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 | ||
diff --git a/src/unit/hash.cpp b/src/unit/hash.cpp index 1c873fd..e04a656 100644 --- a/src/unit/hash.cpp +++ b/src/unit/hash.cpp | |||
| @@ -94,11 +94,11 @@ public: | |||
| 94 | unitFailed("h.get(\"Number 2\") should have thrown an exception."); | 94 | unitFailed("h.get(\"Number 2\") should have thrown an exception."); |
| 95 | } catch( Bu::HashException &e ) { } | 95 | } catch( Bu::HashException &e ) { } |
| 96 | 96 | ||
| 97 | printf("\n"); | 97 | /* printf("\n"); |
| 98 | for( StrIntHash::iterator i = h.begin(); i != h.end(); i++ ) | 98 | for( StrIntHash::iterator i = h.begin(); i != h.end(); i++ ) |
| 99 | { | 99 | { |
| 100 | printf(" - \"%s\" = %d\n", i.getKey().getStr(), i.getValue() ); | 100 | printf(" - \"%s\" = %d\n", i.getKey().getStr(), i.getValue() ); |
| 101 | } | 101 | } */ |
| 102 | } | 102 | } |
| 103 | }; | 103 | }; |
| 104 | 104 | ||
