bool CConfigurationFile::CXML::load(std::istream & is, const std::string & relativeTo) { mPWD = relativeTo; is.imbue(std::locale::classic()); is.precision(16); mpIstream = &is; bool success = true; bool done = false; CVersion Version; CCopasiXMLParser Parser(Version); #define BUFFER_SIZE 0xfffe char * pBuffer = new char[BUFFER_SIZE + 1]; while (!done) { mpIstream->get(pBuffer, BUFFER_SIZE, 0); if (mpIstream->eof()) done = true; if (mpIstream->fail() && !done) { std::string ConfigFile; COptions::getValue("ConfigFile", ConfigFile); CCopasiMessage Message(CCopasiMessage::WARNING, MCConfiguration + 2, ConfigFile.c_str()); done = true; success = false; } if (!Parser.parse(pBuffer, -1, done)) { CCopasiMessage Message(CCopasiMessage::RAW, MCXML + 2, Parser.getCurrentLineNumber(), Parser.getCurrentColumnNumber(), Parser.getErrorString()); done = true; success = false; } } delete [] pBuffer; #undef BUFFER_SIZE if (success && Parser.getCurrentGroup() != NULL) { mConfiguration = * Parser.getCurrentGroup(); mConfiguration.setObjectName("Configuration"); delete Parser.getCurrentGroup(); } else mConfiguration.clear(); return success; }
void ParameterizedFunction::restore ( std::istream & is, int format ) { if (is.good()) { is.precision (std::numeric_limits<double>::digits10 + 1); std::string tmp; bool b_endOfBlock ( false ) ; while ( !b_endOfBlock ) { is >> tmp; // start of block if ( this->isEndTag( tmp, "ParameterizedFunction" ) ) { b_endOfBlock = true; continue; } tmp = this->removeStartTag ( tmp ); if ( tmp.compare("m_parameters") == 0 ) { is >> m_parameters; } else {
CoordType _GetEpsilon(std::istream& is) { std::streamsize str_prec = is.precision(); CoordType str_eps = 1; while(--str_prec > 0) // Precision of 6 gives epsilon = 1e-5 str_eps /= 10; return str_eps; }
double readBranchLength(std::istream &iss) { auto result = double{0.}; iss.precision(std::numeric_limits<double>::digits10 + 2); iss >> result; return result; }