File: StereoGroup.cpp

package info (click to toggle)
rdkit 201809.1%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 123,688 kB
  • sloc: cpp: 230,509; python: 70,501; java: 6,329; ansic: 5,427; sql: 1,899; yacc: 1,739; lex: 1,243; makefile: 445; xml: 229; fortran: 183; sh: 123; cs: 93
file content (40 lines) | stat: -rw-r--r-- 1,261 bytes parent folder | download
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