BOOST_FOREACH (const LString &brush, uniqset) { LString def = pSM->getMaterial(brush, "warabi_brush"); if (!def.isEmpty()) { def = def.trim(" \r\n\t"); ps.formatln("Brush \"%s\" : {", brush.c_str()); ps.println(def); ps.println("}"); bWritten = true; } }
// read from stream void PsfReader::read(qlib::InStream &ins) { int i, ires; qlib::LineStream ls(ins); m_pls = &ls; // skip header line readLine(); readLine(); /////////////////// // read REMARK header line readLine(); removeComment(); int ncomment; if (!m_line.toInt(&ncomment)) { MB_THROW(qlib::FileFormatException, "Cannot read ncomment line"); return; } MB_DPRINTLN("ncomment=%d", ncomment); for (i=0; i<ncomment; ++i) { readLine(); m_line = m_line.trim("\r\n "); LOG_DPRINTLN("%s", m_line.c_str()); } readLine(); /////////////////// // read atoms readLine(); removeComment(); if (!m_line.toInt(&m_natom)) { MB_THROW(qlib::FileFormatException, "Cannot read natom line"); return; } MB_DPRINTLN("natoms=%d", m_natom); LString stmp; for (i=0; i<m_natom; ++i) { readLine(); // LOG_DPRINTLN("%s", m_line.c_str()); // chain name stmp = m_line.substr(9, 3); stmp = stmp.trim(" "); // stmp = stmp.toLowerCase(); LString chain(stmp.c_str()); // residue number stmp = m_line.substr(14, 4); int nresi; if (!stmp.toInt(&nresi)) { LString msg = LString::format("cannot convert resid number: %s", stmp.c_str()); MB_THROW(qlib::FileFormatException, msg); return; } ResidIndex residx(nresi); // residue name stmp = m_line.substr(19, 4); stmp = stmp.trim(" "); // stmp = stmp.toLowerCase(); LString resn(stmp.c_str()); // atom name stmp = m_line.substr(24, 4); stmp = stmp.trim(" "); // stmp = stmp.toLowerCase(); LString name(stmp.c_str()); // charge stmp = m_line.substr(34, 10); double charge; if (!stmp.toDouble(&charge)) { LString msg = LString::format("cannot convert charge %s", stmp.c_str()); MB_THROW(qlib::FileFormatException, msg); return; } // mass stmp = m_line.substr(50, 8); double mass; if (!stmp.toDouble(&mass)) { LString msg = LString::format("cannot convert mass <%s>", stmp.c_str()); MB_THROW(qlib::FileFormatException, msg); return; } ElemID eleid = convMassElem(mass); //LOG_DPRINTLN("ATOM %s %s %d %s", //(*pAtoms)[i].name.c_str(), //(*pAtoms)[i].resn.c_str(), //(*pAtoms)[i].resid, //(*pAtoms)[i].chain.c_str()); MolAtomPtr pAtom = MolAtomPtr(MB_NEW MolAtom()); pAtom->setParentUID(m_pMol->getUID()); pAtom->setName(name); pAtom->setElement(eleid); pAtom->setChainName(chain); pAtom->setResIndex(residx); pAtom->setResName(resn); if (m_pMol->appendAtom(pAtom)<0) { LString stmp = m_line; stmp = stmp.chomp(); // stmp = stmp.toUpperCase(); // m_nErrCount ++; // if (m_nErrCount<m_nErrMax) LOG_DPRINTLN("PsfReader> read ATOM line failed: %s", stmp.c_str()); } } readLine(); }