1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
#include <algorithm>
#include "StereoGroup.h"
namespace RDKit {
StereoGroup::StereoGroup(StereoGroupType grouptype, std::vector<Atom *> &&atoms)
: d_grouptype(grouptype), d_atoms(atoms) {}
StereoGroupType StereoGroup::getGroupType() const {return d_grouptype;}
const std::vector<Atom *>& StereoGroup::getAtoms() const {return d_atoms;}
void removeGroupsWithAtom(const Atom* atom, std::vector<StereoGroup>& groups)
{
auto containsAtom = [atom](const StereoGroup &group) {
return std::find(group.getAtoms().cbegin(), group.getAtoms().cend(),
atom) != group.getAtoms().cend();
};
groups.erase(
std::remove_if(groups.begin(), groups.end(), containsAtom),
groups.end());
}
void removeGroupsWithAtoms(const std::vector<Atom*>& atoms, std::vector<StereoGroup>& groups)
{
auto containsAnyAtom = [atoms](const StereoGroup &group) {
for (auto atom: atoms) {
if (std::find(group.getAtoms().cbegin(), group.getAtoms().cend(), atom) != group.getAtoms().cend()) {
return true;
}
}
return false;
};
groups.erase(
std::remove_if(groups.begin(), groups.end(), containsAnyAtom),
groups.end());
}
} // namespace RDKit
|