const BVParametersTable::SetOfBVParam& BVParametersTable::getStandardSetOfBVParam() const { using namespace diffpy::runtimepath; using diffpy::validators::ensureFileOK; static boost::scoped_ptr<SetOfBVParam> the_set; if (!the_set) { the_set.reset(new SetOfBVParam); string bvparmfile = datapath("bvparm2011sel.cif"); ifstream fp(bvparmfile.c_str()); ensureFileOK(bvparmfile, fp); // read the header up to _valence_param_B and then up to an empty line. LineReader lnrd; lnrd.commentmark = '#'; while (fp >> lnrd) { if (lnrd.wcount() && lnrd.words[0] == "_valence_param_B") break; } // skip to an empty line while (fp >> lnrd && !lnrd.isblank()) { } // load data lines skipping the empty or commented entries while (fp >> lnrd) { if (lnrd.isignored()) continue; BVParam bp; bp.setFromCifLine(lnrd.line); assert(!the_set->count(bp)); the_set->insert(bp); } }
static velodyne::thin::focus* make_focus( const std::string& options, double rate ) // quick and dirty { std::string type = comma::name_value::map( options, "type" ).value< std::string >( "type" ); double ratio = comma::name_value::map( options ).value( "ratio", 1.0 ); velodyne::thin::region* region; if( type == "sector" ) { region = new velodyne::thin::sector( comma::name_value::parser().get< velodyne::thin::sector >( options ) ); } else if( type == "extents" ) { region = new velodyne::thin::extents( comma::csv::ascii< snark::math::closed_interval< double, 3 > >().get( comma::split( options, ';' )[1] ) ); } else { COMMA_THROW( comma::exception, "expected type (sector), got " << type ); } velodyne::thin::focus* focus = new velodyne::thin::focus( rate, ratio ); focus->insert( 0, region ); return focus; }