Changeset 2016


Ignore:
Timestamp:
Apr 10, 2012, 2:22:37 PM (7 years ago)
Author:
ksherdy
Message:

Added block boundary logic for arbitrary length symbols.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/symbol_table/src/id_symbol_table.hpp

    r2014 r2016  
    394394                if(!starts_rscanner.is_done()) {
    395395
    396                         ////////////////////////////////////////////////////////////////////
    397                         // Start - Review boundary logic
    398                         ////////////////////////////////////////////////////////////////////
    399396                        spos = starts_rscanner.get_pos();
    400397                        lgth = epos + (BLOCK_SIZE - spos) + (blks * BLOCK_SIZE);
    401398
    402399                        uint8_t * lb_buffer = buffer - ((lgth / BLOCK_SIZE) + 1)*BLOCK_SIZE;
    403                         int32_t lb_spos = blk_offset - ((BLOCK_SIZE - spos) + (blks * BLOCK_SIZE));//(BLOCK_SIZE - (-1*spos)) & (BLOCK_SIZE-1);
     400                        int32_t lb_spos = (BLOCK_SIZE - (-1*spos)) & (BLOCK_SIZE-1);
     401
     402                        //cout << "s:" << lb_spos << "e:" << epos << "l:" << lgth << endl;
     403
     404                        //cout << string((char*)&lb_buffer[lb_spos], lgth) << endl;
    404405
    405406                        uint8_t * lb_h0 = h0 - ((lgth / BLOCK_SIZE) + 1)*h_block_size;
     
    408409                        gid = h_table.lookup_or_insert(lb_buffer, lb_spos, lgth, lb_h0, lb_h1, h_lgth);
    409410
    410                         symbols.gids[lb_spos] = gid;
    411                         ////////////////////////////////////////////////////////////////////
    412                         // End
    413                         ////////////////////////////////////////////////////////////////////
    414 
    415                         break;
    416                 }
    417 
     411                        symbols.gids[blk_offset + epos - lgth] = gid;
     412
     413                        return; // found start
     414                }
    418415                blks++;
    419416        }
    420 
    421 
    422 
    423 
    424 
    425 
    426 
    427 
    428 
    429 
    430 
    431 
    432 
    433 
    434         ////////////////////////////////////////////////////////////////////
    435         // End
    436         ////////////////////////////////////////////////////////////////////
    437417}
    438418
    439 /////////
     419////////////////////////////////////////////////////////////////////
     420// End
     421////////////////////////////////////////////////////////////////////
     422
    440423
    441424// Fixed Lengths - FORWARD SCAN LOGIC - Scan each BLOCK LSB to MSB (low to high memory address)
Note: See TracChangeset for help on using the changeset viewer.