Changeset 12696

Show
Ignore:
Timestamp:
07/17/11 12:33:46 (3 years ago)
Author:
robert
Message:

From Wang Rui, merged from svn/trunk revision 12695. "improved the handling of the _preReadString within the readWrappedString method by factoring the
reading of the next character into a dedicated getCharacter(..) method."

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/branches/OpenSceneGraph-3.0/src/osgPlugins/osg/AsciiStreamOperator.h

    r12689 r12696  
    247247    virtual void readWrappedString( std::string& str ) 
    248248    { 
    249         if ( !_preReadString.empty() ) 
    250         { 
    251             str = _preReadString; 
    252             return; 
    253         } 
    254          
    255249        char ch; 
    256         _in->get( ch ); checkStream(); 
     250        getCharacter( ch ); 
    257251 
    258252        // skip white space 
    259253        while ( ch==' ' || (ch=='\n') || (ch=='\r')) 
    260254        { 
    261             _in->get( ch ); checkStream(); 
     255            getCharacter( ch ); 
    262256        } 
    263257 
     
    265259        { 
    266260            // we have an "wrapped string" 
    267             _in->get( ch ); checkStream(); 
     261            getCharacter( ch ); 
    268262            while ( ch!='"' ) 
    269263            { 
    270264                if (ch=='\\') 
    271265                { 
    272                     _in->get( ch ); checkStream(); 
     266                    getCharacter( ch ); 
    273267                    str += ch; 
    274268                } 
    275269                else str += ch; 
    276270 
    277                 _in->get( ch ); checkStream(); 
     271                getCharacter( ch ); 
    278272            } 
    279273        } 
     
    284278            { 
    285279                str += ch; 
    286                 _in->get( ch ); checkStream(); 
     280                getCharacter( ch ); 
    287281            } 
    288282        } 
     
    322316     
    323317protected: 
     318    void getCharacter( char& ch ) 
     319    { 
     320        if ( !_preReadString.empty() ) 
     321        { 
     322            ch = _preReadString[0]; 
     323            _preReadString.erase( _preReadString.begin() ); 
     324        } 
     325        else 
     326        { 
     327            _in->get( ch ); 
     328            checkStream(); 
     329        } 
     330    } 
     331     
    324332    std::string _preReadString; 
    325333};