Molassembler  3.0.0
Molecule graph and conformer library
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
RotationEnumerator.h
Go to the documentation of this file.
1 
8 #ifndef INCLUDE_MOLASSEMBLER_STEREOPERMUTATIONS_ROTATION_ENUMERATOR_H
9 #define INCLUDE_MOLASSEMBLER_STEREOPERMUTATIONS_ROTATION_ENUMERATOR_H
10 
12 
13 #include <unordered_set>
14 
15 namespace Scine {
16 namespace Molassembler {
17 namespace Stereopermutations {
18 
32 class MASM_EXPORT RotationEnumerator {
33 public:
34  using RotationSetType = std::vector<Stereopermutation>;
35 
38 
43  boost::optional<const Stereopermutation&> next();
44 
50  const RotationSetType& all();
51 
52 private:
53  bool incrementable() const;
54  void increment();
55 
57  struct Link {
58  unsigned rotationIndex;
59  Stereopermutation permutation;
60 
61  Link(unsigned i, Stereopermutation s);
62  };
63 
65  unsigned linkLimit;
66  std::vector<Link> chain;
67  RotationSetType rotations;
68 };
69 
70 } // namespace Stereopermutations
71 } // namespace Molassembler
72 } // namespace Scine
73 
74 #endif
Represent abstract stereopermutation around atom center.
Definition: Stereopermutation.h:36
Base class to describe substituent arrangements in shapes.
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
Enumerate rotations of stereopermutations in shapes.
Definition: RotationEnumerator.h:32
const RotationsList & rotations(Shape shape)
Fetches a shape&#39;s list of rotations.
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28