Molecule* createLocalMolecule(OpenBabel::OBMol* mol, MoleculeT mType, const std::string& name, std::string& suffix) { // // Add the suffix as comment data to the actual OBMol object. // OpenBabel::OBCommentData* cData = new OpenBabel::OBCommentData(); cData->SetAttribute("Comment"); cData->SetData(suffix); mol->SetData(cData); // // Create this particular molecule type based on the name of the file. // if (mType == LINKER) { return new Linker(mol, name); } else if (mType == RIGID) { return new Rigid(mol, name); } return 0; }
Linker::Linker(OpenBabel::OBMol* obmol, const std::string& name) : uniqueFragmentID(-1), Molecule(obmol, name, LINKER) { // // Acquire the comment data, make a copy, parse that comment. // OpenBabel::OBCommentData* comment = static_cast<OpenBabel::OBCommentData*>(obmol->GetData("Comment")); std::string commentStr = comment->GetData(); parseAppendix(commentStr); }
Rigid::Rigid(OpenBabel::OBMol* obmol, const std::string& name) : Molecule(obmol, name, RIGID) { // // Acquire the comment data, make a copy, parse that comment. // OpenBabel::OBCommentData* comment = static_cast<OpenBabel::OBCommentData*>(obmol->GetData("Comment")); std::string commentStr = comment->GetData(); parseAppendix(commentStr); this->rigids.push_back(this); }
Linker::Linker(OpenBabel::OBMol* obmol, const std::string& name) : Molecule(obmol, name) { // // Acquire the comment data, make a copy, parse that comment. // OpenBabel::OBCommentData* comment = static_cast<OpenBabel::OBCommentData*>(obmol->GetData("Comment")); std::string commentStr = comment->GetData(); parseAppendix(commentStr, obmol->NumAtoms()); // if (Options::OPENBABEL) OBWriter::ScrubAndConvertToSMIInternal(obmol, this->smi); }