11 #ifndef INCLUDE_MOLASSEMBLER_STEREOPERMUTATOR_LIST_H
12 #define INCLUDE_MOLASSEMBLER_STEREOPERMUTATOR_LIST_H
17 #include "boost/optional/optional_fwd.hpp"
22 namespace Molassembler {
24 class AtomStereopermutator;
25 class BondStereopermutator;
37 template<
typename Permutator>
43 "This type may not be instantiated for any type other than atom and bond stereopermutators"
46 using iterator_category = std::forward_iterator_tag;
47 using difference_type = std::ptrdiff_t;
48 using value_type = Permutator;
49 using pointer = Permutator*;
50 using reference = Permutator&;
60 using ImplType = std::conditional_t<
61 std::is_const<Permutator>::value,
69 reference operator * ()
const;
71 bool operator == (
const iterator& other)
const;
72 bool operator != (
const iterator& other)
const;
76 std::unique_ptr<Impl> impl_;
171 void propagateVertexRemoval(
AtomIndex removedIndex);
191 [[deprecated("Prefer
remove")]]
198 [[deprecated("Prefer
remove")]]
241 bool hasZeroAssignmentStereopermutators() const;
247 bool hasUnassignedStereopermutators() const;
277 unsigned size() const;
319 std::unique_ptr<
Impl> impl_;
Defines basic types widely shared across the project.
auto at(Container &&container)
Make functor calling at on arguments.
Definition: Functor.h:58
unsigned size(Shape shape)
Fetch the number of vertices of a shape.
AtomEnvironmentComponents
For bitmasks grouping components of immediate atom environments.
Definition: Types.h:103
Handles the steric permutation of substituents of a non-terminal central atom.
Definition: AtomStereopermutator.h:79
void remove(Container &container, const T &value)
Applies erase-remove idiom in-place to container.
Definition: Functional.h:289
Homogeneous pair of iterators with begin and end member fns.
Definition: IteratorRange.h:26
Handles specific relative arrangements of two atom stereopermutators joined by a bond.
Definition: BondStereopermutator.h:46
Manages all stereopermutators that are part of a Molecule.
Definition: StereopermutatorList.h:30
std::size_t AtomIndex
Unsigned integer atom index type. Used to refer to particular atoms.
Definition: Types.h:51
Permutation applyPermutation(const Permutation &occupation, const Permutation &permutation)
Rotates a passed list of indices with a specified rotation vector.
Type used to refer to particular bonds. Orders first < second.
Definition: Types.h:54
Definition: StereopermutatorList.h:38
Definition: StereopermutatorListImpl.h:19