Changeset 188 for trunk/src/engine.c


Ignore:
Timestamp:
Jul 24, 2008, 8:05:09 AM (11 years ago)
Author:
cameron
Message:

Unify ScanTo? routines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/engine.c

    r183 r188  
    375375
    376376#ifndef OPTIMIZE_SHORT_SCAN
    377 //template <class B>
    378 //inline void ParsingEngine<B>::ScanTo(int item) {
    379 //  buffer_rel_pos = bitstream_scan(buf->item_stream[item],
    380 //                                      buffer_rel_pos);
    381 //  while (buffer_rel_pos >= BUFFER_SIZE) {
    382 //      AdjustBufferEndForIncompleteSequences();
    383 //      FinalizeBuffer_action();
    384 //      AdvanceBuffers();
    385 //      buffer_rel_pos = bitstream_scan(buf->item_stream[item], buffer_rel_pos);
    386 //  }
    387 //}
    388 
     377
     378/*
    389379#define ScanTo(item) \
    390380do {\
     
    397387  }\
    398388} while(0)
    399 
    400 
    401 
    402 #endif
    403 
    404 template <class B>
    405 inline void ParsingEngine<B>::ScanToMarkupStart() {
     389*/
     390
     391
     392#endif
     393template <class B>
     394inline void ParsingEngine<B>::ScanTo(int item) {
     395        buffer_rel_pos = bitstream_scan(buf->item_stream[item], buffer_rel_pos);
     396        while (buffer_rel_pos >= BUFFER_SIZE) {
     397                AdjustBufferEndForIncompleteSequences();
     398                FinalizeBuffer_action();
     399                AdvanceBuffers();
     400                buffer_rel_pos = bitstream_scan(buf->item_stream[item], buffer_rel_pos);
     401        }
     402}
     403
     404template <class B>
     405inline void ParsingEngine<B>::ScanTextTo(int item) {
    406406        text_or_markup_start = AbsPos();
    407         buffer_rel_pos = bitstream_scan(buf->item_stream[MarkupStart], buffer_rel_pos);
     407        buffer_rel_pos = bitstream_scan(buf->item_stream[item], buffer_rel_pos);
    408408        while (buffer_rel_pos >= BUFFER_SIZE) {
    409409                AdjustBufferEndForIncompleteSequences();
     
    412412                FinalizeBuffer_action();
    413413                AdvanceBuffers();
    414                 buffer_rel_pos = bitstream_scan(buf->item_stream[MarkupStart], buffer_rel_pos);
    415         }
    416 }
    417 
    418 template <class B>
    419 inline void ParsingEngine<B>::ScanToCD_End_check() {
    420         buffer_rel_pos = bitstream_scan(buf->item_stream[CD_End_check], buffer_rel_pos);
    421         while (buffer_rel_pos >= BUFFER_SIZE) {
    422                 AdjustBufferEndForIncompleteSequences();
    423                 Text_action(GetCodeUnitPtr(text_or_markup_start), LengthFrom(text_or_markup_start), true);
    424                 text_or_markup_start = AbsPos();
    425                 FinalizeBuffer_action();
    426                 AdvanceBuffers();
    427                 buffer_rel_pos = bitstream_scan(buf->item_stream[CD_End_check], buffer_rel_pos);
     414                buffer_rel_pos = bitstream_scan(buf->item_stream[item], buffer_rel_pos);
    428415        }
    429416}
     
    507494                CDATA_start_action(GetCodeUnitPtr(text_or_markup_start));
    508495                text_or_markup_start = AbsPos();
    509                 ScanTo(CD_End_check);
     496                ScanTextTo(CD_End_check);
    510497                while (!at_CDATA_End<B::Base>(cur())) {
    511                         if(at_EOF())
     498                        if (at_EOF())
    512499                                Syntax_Error(NT_CDSect);
    513500                        Advance(1);
    514                         ScanTo(CD_End_check);
     501                        ScanTextTo(CD_End_check);
    515502                }
    516503                Text_action(GetCodeUnitPtr(text_or_markup_start), LengthFrom(text_or_markup_start), true);
     
    11231110        do {
    11241111                text_or_markup_start = AbsPos();
    1125                 ScanToMarkupStart(); /* '<', '&', or ']' for ']]>' test */
     1112                ScanTextTo(MarkupStart); /* '<', '&', or ']' for ']]>' test */
    11261113                if (at_ElementTag_Start<B::Base>(cur())) {
    11271114                        text_if_nonnull_action(false);
     
    11791166        do {
    11801167                text_or_markup_start = AbsPos();
    1181                 ScanToMarkupStart(); /* '<', '&', or ']' for ']]>' test */
     1168                ScanTextTo(MarkupStart); /* '<', '&', or ']' for ']]>' test */
    11821169/*              if (AtChar<B::Base,'<'>(cur())) {
    11831170                        text_if_nonnull_action();
     
    21012088                                        Advance(1);
    21022089                                        while(!at_EOF()){
    2103                                                 ScanToMarkupStart();
     2090                                                ScanTextTo(MarkupStart);
    21042091                                                if(at_condSect_start<B::Base>(cur())){
    21052092                                                        Advance(3);
     
    23622349        do {
    23632350                text_or_markup_start = AbsPos();
    2364                 ScanToMarkupStart(); /* '<', '&', or ']' for ']]>' test */
     2351                ScanTextTo(MarkupStart); /* '<', '&', or ']' for ']]>' test */
    23652352                if (at_ElementTag_Start<B::Base>(cur())) {
    23662353                        text_if_nonnull_action(false);
     
    24132400        do {
    24142401                text_or_markup_start = AbsPos();
    2415                 ScanToMarkupStart(); /* '<', '&', or ']' for ']]>' test */
     2402                ScanTextTo(MarkupStart); /* '<', '&', or ']' for ']]>' test */
    24162403/*              if (AtChar<B::Base,'<'>(cur())) {
    24172404                        text_if_nonnull_action();
Note: See TracChangeset for help on using the changeset viewer.