Changeset 2080
- Timestamp:
- 05/08/12 12:05:50 (13 months ago)
- Files:
-
- 1 modified
-
trunk/symbol_table/src/hash_table.hpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/symbol_table/src/hash_table.hpp
r2069 r2080 46 46 } node; 47 47 48 template<uint32_t LGTH, class COMPARE_STRATEGY, class HASH_STRATEGY, class ALLOCATOR>48 template<uint32_t LGTH, int GROUP_STRATEGY, class ALLOCATOR> 49 49 class hash_table { 50 50 51 51 public: 52 53 52 hash_table(const uint32_t table_size=1024, const uint32_t resize_chain_lgth=2) { 54 53 #ifdef HASH_TABLE_HPP_DEBUG … … 276 275 node ** table; 277 276 byte_pool<ALLOCATOR> raw_data_pool; 278 COMPARE_STRATEGYcompare_strategy;279 HASH_STRATEGYhash_strategy;277 compare_strategy_t<LGTH> compare_strategy; 278 hash_strategy_t<LGTH,GROUP_STRATEGY> hash_strategy; 280 279 281 280 /////////////////////////////////////////////////////////////////////////// … … 354 353 // id - Identity Strategy 355 354 /////////////////////////////////////////////////////////////////////////// 356 template<uint32_t LGTH, class COMPARE_STRATEGY, class HASH_STRATEGY, class ALLOCATOR>357 class id_hash_table : public hash_table<LGTH, COMPARE_STRATEGY, HASH_STRATEGY, ALLOCATOR> {};355 template<uint32_t LGTH, int GROUP_STRATEGY, class ALLOCATOR> 356 class id_hash_table : public hash_table<LGTH, GROUP_STRATEGY, ALLOCATOR> {}; 358 357 359 358 /////////////////////////////////////////////////////////////////////////// … … 375 374 } 376 375 377 378 template<uint32_t LGTH, class COMPARE_STRATEGY, class HASH_STRATEGY, class ALLOCATOR> 379 class div2_hash_table : public hash_table<LGTH, COMPARE_STRATEGY, HASH_STRATEGY, ALLOCATOR> { 376 template<uint32_t LGTH, int GROUP_STRATEGY, class ALLOCATOR> 377 class div2_hash_table : public hash_table<LGTH, GROUP_STRATEGY, ALLOCATOR> { 380 378 381 379 public: … … 425 423 // Odd 426 424 /////////////////////////////////////////////////////////////////////////// 427 if(this->hash_table_odd.lookup(bucket, raw_bytes, idx, lgth-1, h0, h1, gid)) { 425 bucket = this->hash_table_odd.get_bucket(h0,h1,idx); 426 lgth = lgth - 1; 427 428 if(this->hash_table_odd.lookup(bucket, raw_bytes, idx, lgth, h0, h1, gid)) { 428 429 return gid; 429 430 } 430 431 431 hash_table_odd.pool_and_insert(bucket, raw_bytes, idx, lgth -1, h0, h1, gid_factory, gid_data, gid);432 hash_table_odd.pool_and_insert(bucket, raw_bytes, idx, lgth, h0, h1, gid_factory, gid_data, gid); 432 433 return gid; 433 434 } … … 441 442 } 442 443 443 id_hash_table<LGTH-1, COMPARE_STRATEGY, HASH_STRATEGY, ALLOCATOR> hash_table_odd;444 id_hash_table<LGTH-1, id, ALLOCATOR> hash_table_odd; 444 445 }; 445 446 … … 447 448 // log2 - Log base 2 Strategy 448 449 /////////////////////////////////////////////////////////////////////////// 449 template<uint32_t LGTH, class COMPARE_STRATEGY, class HASH_STRATEGY, class ALLOCATOR>450 class log 2_hash_table : public hash_table<LGTH, COMPARE_STRATEGY, HASH_STRATEGY, ALLOCATOR> {};450 template<uint32_t LGTH, int GROUP_STRATEGY, class ALLOCATOR> 451 class logbase2_hash_table : public hash_table<LGTH, GROUP_STRATEGY, ALLOCATOR> {}; 451 452 452 453 #endif // HASH_TABLE_HPP
