Changeset 2079 for trunk/symbol_table
- Timestamp:
- May 8, 2012, 12:05:43 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/symbol_table/src/symbol_table.hpp
r2069 r2079 27 27 static void print_symbol_debug(gid_type gid, const uint8_t buffer [], const int32_t spos, const uint32_t epos, const uint32_t lgth) { 28 28 cout << "{Symbol:{"; 29 cout << "GID: " << gid;30 cout << " ,Length:" << lgth;31 cout << " ,Value:'" << string((char *)&(buffer[spos]), lgth) << "'";32 cout << " ,Start:" << spos;33 cout << " ,End:" << epos;29 cout << "GID:'" << gid; 30 cout << "',Length:" << lgth; 31 cout << "',Value:'" << string((char *)&(buffer[spos]), lgth) << "'"; 32 cout << "',Start':" << spos; 33 cout << "',End:" << epos; 34 34 cout << "}}" << endl; 35 35 } … … 127 127 // Byte Space Hash (Fixed Length) 128 128 /////////////////////////////////////////////////////////////////////////////// 129 #define BYTE_HASH_FIXED(GROUP_STRATEGY, LGTH , CMP_STRATEGY, HASH_STRATEGY) \129 #define BYTE_HASH_FIXED(GROUP_STRATEGY, LGTH) \ 130 130 if(bitblock::any(groups.ends_##LGTH)) { \ 131 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, CMP_STRATEGY, HASH_STRATEGY, ALLOCATOR> > \131 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, GROUP_STRATEGY, ALLOCATOR> > \ 132 132 (blk_offset, \ 133 133 hash_table_##LGTH, \ … … 141 141 // Byte Space Variable Lengths (groups contain variable lengths) 142 142 /////////////////////////////////////////////////////////////////////////////// 143 #define BYTE_HASH_VARIABLE(GROUP_STRATEGY, LGTH , CMP_STRATEGY, HASH_STRATEGY) \143 #define BYTE_HASH_VARIABLE(GROUP_STRATEGY, LGTH) \ 144 144 if(bitblock::any(groups.ends_##LGTH)) { \ 145 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, CMP_STRATEGY, HASH_STRATEGY, ALLOCATOR> > \145 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, GROUP_STRATEGY, ALLOCATOR> > \ 146 146 (blk_offset, \ 147 147 hash_table_##LGTH, \ … … 157 157 // Bit Space Hash (Fixed Length) 158 158 /////////////////////////////////////////////////////////////////////////////// 159 #define BIT_HASH_FIXED(GROUP_STRATEGY, LGTH , CMP_STRATEGY, HASH_STRATEGY) \159 #define BIT_HASH_FIXED(GROUP_STRATEGY, LGTH) \ 160 160 if(bitblock::any(groups.ends_##LGTH)) { \ 161 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, CMP_STRATEGY, HASH_STRATEGY, ALLOCATOR> > \161 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, GROUP_STRATEGY, ALLOCATOR> > \ 162 162 (blk_offset, \ 163 163 hash_table_##LGTH, \ … … 171 171 // Byte Space Variable Lengths (groups contain variable lengths) 172 172 /////////////////////////////////////////////////////////////////////////////// 173 #define BIT_HASH_VARIABLE(GROUP_STRATEGY, LGTH , CMP_STRATEGY, HASH_STRATEGY) \173 #define BIT_HASH_VARIABLE(GROUP_STRATEGY, LGTH) \ 174 174 if(bitblock::any(groups.ends_##LGTH)) { \ 175 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, CMP_STRATEGY, HASH_STRATEGY, ALLOCATOR> > \175 do_block<GIDS, GROUP_STRATEGY##_hash_table <LGTH, GROUP_STRATEGY, ALLOCATOR> > \ 176 176 (blk_offset, \ 177 177 hash_table_##LGTH, \ … … 185 185 /////////////////////////////////////////////////////////////////////////////// 186 186 // WARNING: BYTE_HASH max 8 bytes under the shift XOR hash approach of hash.hpp 187 // ---> (id,7),(div2,6),(log 2,4)187 // ---> (id,7),(div2,6),(logbase2,4) 188 188 /////////////////////////////////////////////////////////////////////////////// 189 189 #ifdef ID_STRATEGY 190 BYTE_HASH_FIXED(id,1 ,compare_strategy_t<1>,hash_strategy_t<1>);191 BYTE_HASH_FIXED(id,2 ,compare_strategy_t<2>,hash_strategy_t<2>);192 BYTE_HASH_FIXED(id,3 ,compare_strategy_t<3>,hash_strategy_t<3>);193 BYTE_HASH_FIXED(id,4 ,compare_strategy_t<4>,hash_strategy_t<4>);194 BYTE_HASH_FIXED(id,5 ,compare_strategy_t<5>,hash_strategy_t<5>);195 BYTE_HASH_FIXED(id,6 ,compare_strategy_t<6>,hash_strategy_t<6>);196 BYTE_HASH_FIXED(id,7 ,compare_strategy_t<7>,hash_strategy_t<7>);197 BIT_HASH_FIXED(id,8 ,compare_strategy_t<8>,hash_strategy_t<8>);198 BIT_HASH_FIXED(id,9 ,compare_strategy_t<9>,hash_strategy_t<9>);199 BIT_HASH_FIXED(id,10 ,compare_strategy_t<10>,hash_strategy_t<10>);200 BIT_HASH_FIXED(id,11 ,compare_strategy_t<11>,hash_strategy_t<11>);201 BIT_HASH_FIXED(id,12 ,compare_strategy_t<12>,hash_strategy_t<12>);202 BIT_HASH_FIXED(id,13 ,compare_strategy_t<13>,hash_strategy_t<13>);203 BIT_HASH_FIXED(id,14 ,compare_strategy_t<14>,hash_strategy_t<14>);204 BIT_HASH_FIXED(id,15 ,compare_strategy_t<15>,hash_strategy_t<15>);205 BIT_HASH_FIXED(id,16 ,compare_strategy_t<16>,hash_strategy_t<16>);190 BYTE_HASH_FIXED(id,1); 191 BYTE_HASH_FIXED(id,2); 192 BYTE_HASH_FIXED(id,3); 193 BYTE_HASH_FIXED(id,4); 194 BYTE_HASH_FIXED(id,5); 195 BYTE_HASH_FIXED(id,6); 196 BYTE_HASH_FIXED(id,7); 197 BIT_HASH_FIXED(id,8); 198 BIT_HASH_FIXED(id,9); 199 BIT_HASH_FIXED(id,10); 200 BIT_HASH_FIXED(id,11); 201 BIT_HASH_FIXED(id,12); 202 BIT_HASH_FIXED(id,13); 203 BIT_HASH_FIXED(id,14); 204 BIT_HASH_FIXED(id,15); 205 BIT_HASH_FIXED(id,16); 206 206 #elif DIV2_STRATEGY 207 BYTE_HASH_FIXED(div2,2 ,compare_strategy_t<2>,hash_strategy_t<2>);208 BYTE_HASH_FIXED(div2,4 ,compare_strategy_t<4>,hash_strategy_t<4>);209 BYTE_HASH_FIXED(div2,6 ,compare_strategy_t<6>,hash_strategy_t<6>);210 BIT_HASH_FIXED(div2,8 ,compare_strategy_t<8>,hash_strategy_t<8>);211 BIT_HASH_FIXED(div2,10 ,compare_strategy_t<10>,hash_strategy_t<10>);212 BIT_HASH_FIXED(div2,12 ,compare_strategy_t<12>,hash_strategy_t<12>);213 BIT_HASH_FIXED(div2,14 ,compare_strategy_t<14>,hash_strategy_t<14>);214 BIT_HASH_FIXED(div2,16 ,compare_strategy_t<16>,hash_strategy_t<16>);207 BYTE_HASH_FIXED(div2,2); 208 BYTE_HASH_FIXED(div2,4); 209 BYTE_HASH_FIXED(div2,6); 210 BIT_HASH_FIXED(div2,8); 211 BIT_HASH_FIXED(div2,10); 212 BIT_HASH_FIXED(div2,12); 213 BIT_HASH_FIXED(div2,14); 214 BIT_HASH_FIXED(div2,16); 215 215 #elif LOG2_STRATEGY 216 BYTE_HASH_VARIABLE(log 2,1,compare_strategy_t<0>,log_hash_strategy_t<1>);217 BYTE_HASH_VARIABLE(log 2,2,compare_strategy_t<0>,log_hash_strategy_t<2>);218 BYTE_HASH_VARIABLE(log 2,4,compare_strategy_t<0>,log_hash_strategy_t<4>);219 BIT_HASH_VARIABLE(log 2,8,compare_strategy_t<0>,log_hash_strategy_t<8>);220 BIT_HASH_VARIABLE(log 2,16,compare_strategy_t<0>,log_hash_strategy_t<16>);216 BYTE_HASH_VARIABLE(logbase2,1); 217 BYTE_HASH_VARIABLE(logbase2,2); 218 BYTE_HASH_VARIABLE(logbase2,4); 219 BIT_HASH_VARIABLE(logbase2,8); 220 BIT_HASH_VARIABLE(logbase2,16); 221 221 #endif 222 222 … … 227 227 228 228 if(bitblock::any(groups.ends_gte_17)) { 229 do_block<GIDS, id_hash_table<0, compare_strategy_t<0>, hash_strategy_t<0>, ALLOCATOR> >229 do_block<GIDS, id_hash_table<0, id, ALLOCATOR> > 230 230 (blk_offset, 231 231 hash_table_gte_17, … … 241 241 242 242 private: 243 244 243 GIDFactory gid_factory; 245 244 GIDData gid_data; … … 249 248 /////////////////////////////////////////////////////////////////////////////// 250 249 #ifdef ID_STRATEGY 251 id_hash_table<1, compare_strategy_t<1>, hash_strategy_t<1>, ALLOCATOR> hash_table_1;252 id_hash_table<2, compare_strategy_t<2>, hash_strategy_t<2>, ALLOCATOR> hash_table_2;253 id_hash_table<3, compare_strategy_t<3>, hash_strategy_t<3>, ALLOCATOR> hash_table_3;254 id_hash_table<4, compare_strategy_t<4>, hash_strategy_t<4>, ALLOCATOR> hash_table_4;255 id_hash_table<5, compare_strategy_t<5>, hash_strategy_t<5>, ALLOCATOR> hash_table_5;256 id_hash_table<6, compare_strategy_t<6>, hash_strategy_t<6>, ALLOCATOR> hash_table_6;257 id_hash_table<7, compare_strategy_t<7>, hash_strategy_t<7>, ALLOCATOR> hash_table_7;258 id_hash_table<8, compare_strategy_t<8>, hash_strategy_t<8>, ALLOCATOR> hash_table_8;259 id_hash_table<9, compare_strategy_t<9>, hash_strategy_t<9>, ALLOCATOR> hash_table_9;260 id_hash_table<10, compare_strategy_t<10>, hash_strategy_t<10>, ALLOCATOR> hash_table_10;261 id_hash_table<11, compare_strategy_t<11>, hash_strategy_t<11>, ALLOCATOR> hash_table_11;262 id_hash_table<12, compare_strategy_t<12>, hash_strategy_t<12>, ALLOCATOR> hash_table_12;263 id_hash_table<13, compare_strategy_t<13>, hash_strategy_t<13>, ALLOCATOR> hash_table_13;264 id_hash_table<14, compare_strategy_t<14>, hash_strategy_t<14>, ALLOCATOR> hash_table_14;265 id_hash_table<15, compare_strategy_t<15>, hash_strategy_t<15>, ALLOCATOR> hash_table_15;266 id_hash_table<16, compare_strategy_t<16>, hash_strategy_t<16>, ALLOCATOR> hash_table_16;250 id_hash_table<1, id, ALLOCATOR> hash_table_1; 251 id_hash_table<2, id, ALLOCATOR> hash_table_2; 252 id_hash_table<3, id, ALLOCATOR> hash_table_3; 253 id_hash_table<4, id, ALLOCATOR> hash_table_4; 254 id_hash_table<5, id, ALLOCATOR> hash_table_5; 255 id_hash_table<6, id, ALLOCATOR> hash_table_6; 256 id_hash_table<7, id, ALLOCATOR> hash_table_7; 257 id_hash_table<8, id, ALLOCATOR> hash_table_8; 258 id_hash_table<9, id, ALLOCATOR> hash_table_9; 259 id_hash_table<10, id, ALLOCATOR> hash_table_10; 260 id_hash_table<11, id, ALLOCATOR> hash_table_11; 261 id_hash_table<12, id, ALLOCATOR> hash_table_12; 262 id_hash_table<13, id, ALLOCATOR> hash_table_13; 263 id_hash_table<14, id, ALLOCATOR> hash_table_14; 264 id_hash_table<15, id, ALLOCATOR> hash_table_15; 265 id_hash_table<16, id, ALLOCATOR> hash_table_16; 267 266 #elif DIV2_STRATEGY 268 div2_hash_table<2, compare_strategy_t<2>, hash_strategy_t<2>, ALLOCATOR> hash_table_2;269 div2_hash_table<4, compare_strategy_t<4>, hash_strategy_t<4>, ALLOCATOR> hash_table_4;270 div2_hash_table<6, compare_strategy_t<6>, hash_strategy_t<6>, ALLOCATOR> hash_table_6;271 div2_hash_table<8, compare_strategy_t<8>, hash_strategy_t<8>, ALLOCATOR> hash_table_8;272 div2_hash_table<10, compare_strategy_t<10>, hash_strategy_t<10>, ALLOCATOR> hash_table_10;273 div2_hash_table<12, compare_strategy_t<12>, hash_strategy_t<12>, ALLOCATOR> hash_table_12;274 div2_hash_table<14, compare_strategy_t<14>, hash_strategy_t<14>, ALLOCATOR> hash_table_14;275 div2_hash_table<16, compare_strategy_t<16>, hash_strategy_t<16>, ALLOCATOR> hash_table_16;267 div2_hash_table<2, div2, ALLOCATOR> hash_table_2; 268 div2_hash_table<4, div2, ALLOCATOR> hash_table_4; 269 div2_hash_table<6, div2, ALLOCATOR> hash_table_6; 270 div2_hash_table<8, div2, ALLOCATOR> hash_table_8; 271 div2_hash_table<10, div2, ALLOCATOR> hash_table_10; 272 div2_hash_table<12, div2, ALLOCATOR> hash_table_12; 273 div2_hash_table<14, div2, ALLOCATOR> hash_table_14; 274 div2_hash_table<16, div2, ALLOCATOR> hash_table_16; 276 275 #elif LOG2_STRATEGY 277 log 2_hash_table<1, compare_strategy_t<0>, log_hash_strategy_t<1>, ALLOCATOR> hash_table_1;278 log 2_hash_table<2, compare_strategy_t<0>, log_hash_strategy_t<2>, ALLOCATOR> hash_table_2;279 log 2_hash_table<4, compare_strategy_t<0>, log_hash_strategy_t<4>, ALLOCATOR> hash_table_4;280 log 2_hash_table<8, compare_strategy_t<0>, log_hash_strategy_t<8>, ALLOCATOR> hash_table_8;281 log 2_hash_table<16, compare_strategy_t<0>, log_hash_strategy_t<16>, ALLOCATOR> hash_table_16;276 logbase2_hash_table<1, logbase2, ALLOCATOR> hash_table_1; 277 logbase2_hash_table<2, logbase2, ALLOCATOR> hash_table_2; 278 logbase2_hash_table<4, logbase2, ALLOCATOR> hash_table_4; 279 logbase2_hash_table<8, logbase2, ALLOCATOR> hash_table_8; 280 logbase2_hash_table<16, logbase2, ALLOCATOR> hash_table_16; 282 281 #else 283 282 #error "Length group strategy not specified. #define {ID_STRATEGY,DIV2_STRATEGY,LOG2_STRATEGY}." 284 283 #endif 285 284 286 id_hash_table<0, compare_strategy_t<0>, hash_strategy_t<0>, ALLOCATOR> hash_table_gte_17;285 id_hash_table<0, id, ALLOCATOR> hash_table_gte_17; 287 286 }; 288 287
Note: See TracChangeset
for help on using the changeset viewer.