Example #1
0
/*!
 * Reads data headers from strean.
 * All field information available in file are stored.
 * @param[in]   str     output stream
 */
void VTK::readDataHeader( std::fstream &str ){


    std::fstream::pos_type   pos_ ;

    VTKLocation             location;
    std::string             locationString ;
    std::string             line, loc_;
    std::stringstream       ss;

    bool                    read ;

    VTKField                temp ;
    VTKField**              ptemp ;


    for( int i=0; i<2; i++){

        ss.str("") ;
        if( i== 0) {
            location = VTKLocation::POINT;
            locationString = "Point" ;
        } else if( i== 1) {
            location = VTKLocation::CELL;
            locationString = "Cell" ;
        }


        temp.setLocation( location ) ;

        ss << "</" << locationString << "Data>" ;
        loc_ = ss.str();

        read= true ; 
        if( ! getline( str, line) ) read = false ;
        if( bitpit::utils::keywordInString( line, loc_) ) read=false ;


        while( read ){
            if( vtk::convertStringToDataArray( line, temp  ) ) {

                if( temp.getCodification() == VTKFormat::ASCII) {
                    pos_ = str.tellg() ;
                }

                else{
                    pos_ =  0 ; 
                };

                temp.setPosition( pos_ ) ;

                if( ! getFieldByName( temp.getName(), ptemp )) {
                    data.push_back( new VTKField( temp ) ) ;
                }

                else{
                    (*ptemp)->setOffset( temp.getOffset() ) ;
                    (*ptemp)->setLocation( temp.getLocation() ) ;
                    (*ptemp)->setDataType( temp.getDataType() ) ;
                    (*ptemp)->setFieldType( temp.getFieldType() ) ;
                    (*ptemp)->setCodification( temp.getCodification() ) ;

                };

            };

            if( ! getline( str, line) ) read = false ;
            if( bitpit::utils::keywordInString( line, loc_) ) read=false ;
        }; 

    };

    return ;
};