void ReactionCdxLoader::loadReaction (Reaction &rxn) { rxn.clear(); QS_DEF(Array<char>, buf); _scanner.readAll(buf); buf.push(0); }
void CrfLoader::loadReaction (Reaction &reaction) { int i; int nreactants = _scanner.readPackedUInt(); int nproducts = _scanner.readPackedUInt(); byte flags = _scanner.readByte(); int ncatalyst = 0; if (flags & CrfFeatureFlags::CRF_CATALYST) ncatalyst = _scanner.readPackedUInt(); reaction.clear(); _bond_rc_flags = 0; _atom_stereo_flags = 0; _aam = 0; bool have_aam = (flags != 0); for (i = 0; i < nreactants; i++) { int index = reaction.addReactant(); _loadReactionMolecule(reaction, index, have_aam); } for (i = 0; i < nproducts; i++) { int index = reaction.addProduct(); _loadReactionMolecule(reaction, index, have_aam); } for (i = 0; i < ncatalyst; i++) { int index = reaction.addCatalyst(); _loadReactionMolecule(reaction, index, have_aam); } }
void ReactionCmlLoader::loadReaction (Reaction &rxn) { rxn.clear(); QS_DEF(Array<char>, buf); _scanner.readAll(buf); buf.push(0); TiXmlDocument xml; xml.Parse(buf.ptr()); if (xml.Error()) throw Error("XML parsing error: %s", xml.ErrorDesc()); TiXmlHandle hxml(&xml); TiXmlElement *elem; TiXmlHandle hroot(0); elem = hxml.FirstChild("reaction").Element(); if (elem == 0) elem = hxml.FirstChild("cml").FirstChild("reaction").Element(); if (elem == 0) throw Error("no <reaction>?"); hroot = TiXmlHandle(elem); const char *title = elem->Attribute("title"); if (title != 0) rxn.name.readString(title, true); QS_DEF(Molecule, mol); elem = hroot.FirstChild("reactantList").FirstChild().Element(); for (; elem; elem = elem->NextSiblingElement()) { if (strcasecmp(elem->Value(), "molecule") != 0) continue; TiXmlHandle handle(elem); MoleculeCmlLoader loader(handle); loader.stereochemistry_options = stereochemistry_options; loader.loadMolecule(mol); rxn.addReactantCopy(mol, 0, 0); } elem = hroot.FirstChild("productList").FirstChild().Element(); for (; elem; elem = elem->NextSiblingElement()) { if (strcasecmp(elem->Value(), "molecule") != 0) continue; TiXmlHandle handle(elem); MoleculeCmlLoader loader(handle); loader.stereochemistry_options = stereochemistry_options; loader.loadMolecule(mol); rxn.addProductCopy(mol, 0, 0); } elem = hroot.FirstChild("spectatorList").FirstChild().Element(); for (; elem; elem = elem->NextSiblingElement()) { if (strcasecmp(elem->Value(), "molecule") != 0) continue; TiXmlHandle handle(elem); MoleculeCmlLoader loader(handle); loader.stereochemistry_options = stereochemistry_options; loader.loadMolecule(mol); rxn.addCatalystCopy(mol, 0, 0); } }