Changeset 8dcfb9
- Timestamp:
- May 18, 2016, 10:04:49 PM (9 years ago)
- Branches:
- CombiningParticlePotentialParsing
- Children:
- 9bb977
- Parents:
- ff4fff9
- git-author:
- Frederik Heber <heber@…> (03/09/16 11:54:33)
- git-committer:
- Frederik Heber <heber@…> (05/18/16 22:04:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/PotentialAction/ParsePotentialsAction.cpp
rff4fff9 r8dcfb9 65 65 std::ifstream returnstream(params.potential_file.get().string().c_str()); 66 66 if (returnstream.good()) { 67 try { 68 RegistryDeserializer<EmpiricalPotential> deserialize( 69 returnstream, 70 PotentialFactory::getInstance(), 71 PotentialRegistry::getInstance(), 72 std::string("potential")); 73 deserialize(); 74 } catch (SerializerMissingValueException &e) { 75 if (const std::string *key = boost::get_error_info<SerializerKey>(e)) 76 STATUS("Missing value when parsing information for potential "+*key+"."); 77 else 78 STATUS("Missing value parsing information for potential with unknown key."); 79 return Action::failure; 80 } catch (SerializerIllegalKeyException &e) { 81 if (const std::string *key = boost::get_error_info<SerializerKey>(e)) 82 STATUS("Illegal key parsing information for potential "+*key+"."); 83 else 84 STATUS("Illegal key parsing information for potential with unknown key."); 85 return Action::failure; 67 std::string linestring; 68 std::string token; 69 while (returnstream.good()) { 70 getline(returnstream, linestring); 71 const std::string comment("#"); 72 if (linestring.find(comment) != std::string::npos) { 73 LOG(4, "DEBUG: Skippeing comment line:"+linestring); 74 continue; 75 } 76 const std::string whitespace(" \t"); 77 const size_t strBegin = linestring.find_first_not_of(whitespace); 78 const size_t curlyopenpos = linestring.find("{"); 79 const size_t curlyclosedpos = linestring.find("}"); 80 if (curlyopenpos != std::string::npos) { 81 // begin of new type section 82 token = linestring.substr(strBegin, curlyopenpos); 83 const size_t tokenEnd = token.find_first_of(whitespace); 84 token = token.substr(0, tokenEnd); 85 LOG(1, "INFO: Token is " << token); 86 const type_name_map_t::right_const_iterator tokeniter = TypeNameMap.right.find(token); 87 ASSERT( tokeniter != TypeNameMap.right.end(), 88 "PotentialParsePotentialsAction::performCall() - could not find type to " 89 +toString(token)+"."); 90 const tokentype_t tokentype = tokeniter->second; 91 // get either particles {} or potentials {} 92 switch (tokentype) { 93 case particles: 94 { 95 if (!parseItems<Particle>( 96 returnstream, 97 ParticleFactory::getInstance(), 98 ParticleRegistry::getInstance(), 99 std::string("particle"))) 100 return Action::failure; 101 break; 102 } 103 case bonds: 104 case angles: 105 case torsions: 106 case impropers: 107 case nonbonded_2body_potentials: 108 { 109 if (!parseItems<EmpiricalPotential>( 110 returnstream, 111 PotentialFactory::getInstance(), 112 PotentialRegistry::getInstance(), 113 std::string("potential"))) 114 return Action::failure; 115 break; 116 } 117 default: 118 ASSERT( 0, 119 "PotentialParsePotentialsAction::performCall() - token type " 120 +toString(tokentype)+" is unknown."); 121 } 122 } else if (curlyclosedpos != std::string::npos) { 123 // section end encountered, just read next line 124 } else { 125 ELOG(0, "Parser confused, neither curly open nor curly closed on line " 126 << linestring); 127 return Action::failure; 128 } 86 129 } 87 130 } else {
Note:
See TracChangeset
for help on using the changeset viewer.