8 #ifndef INCLUDE_MOLASSEMBLER_OUTER_GRAPH_H
9 #define INCLUDE_MOLASSEMBLER_OUTER_GRAPH_H
20 using ElementTypeCollection = std::vector<ElementType>;
21 class BondOrderCollection;
24 namespace Molassembler {
71 template<
typename T,
bool isVertexInitialized>
75 std::is_same<T, AtomIndex>::value || std::is_same<T, BondIndex>::value,
76 "You may not instantiate this type for other Ts than AtomIndex or BondIndex"
79 using iterator_category = std::forward_iterator_tag;
80 using difference_type = std::ptrdiff_t;
117 template<
bool Dependent = isVertexInitialized, std::enable_if_t<!Dependent,
int>...>
132 template<
bool Dependent = isVertexInitialized, std::enable_if_t<Dependent,
int>...>
140 value_type operator * ()
const;
149 std::unique_ptr<Impl> pImpl_;
190 void removeBond(const
BondIndex& bond) final;
214 Utils::BondOrderCollection bondOrders() const;
250 std::
string dumpGraphviz() const;
255 Utils::ElementTypeCollection elementCollection() const;
266 [[deprecated("Prefer V")]]
278 [[deprecated("Prefer E")]]
285 unsigned E() const final;
314 bool operator == (const
Graph& other) const;
315 inline
bool operator != (const
Graph& other)
const {
316 return !(*
this == other);
372 std::unique_ptr<PrivateGraph> innerPtr_;
Interface class for the molecular graph.
Wrapper class to make working with RDL in C++ more pleasant.
Definition: Cycles.h:44
Templated iterator facade based on PrivateGraph to provide iterative access to atom indices and edge ...
Definition: Graph.h:72
InnerBasedIterator(const PrivateGraph &inner, bool begin)
Construct an iterator from a graph and a boolean indicating begin/end.
InnerBasedIterator(AtomIndex a, const PrivateGraph &inner, bool begin)
Construct an iterator from an atom index, a graph and a boolean indicating begin/end.
Represents the connectivity of atoms of a molecule.
Definition: Graph.h:54
IteratorRange< IncidentEdgesIterator > bonds(AtomIndex a) const
Fetch iterator pair yielding bonds indices indicent to an atom.
IteratorRange< AdjacencyIterator > adjacents(AtomIndex a) const
Fetch iterator pair yielding adjacents of an atom.
IteratorRange< AtomIterator > atoms() const
A begin-end pair of iterators that yield the range of valid atom indices.
PrivateGraph & inner()
Access to library-internal graph representation class.
IteratorRange< BondIterator > bonds() const
A begin-end pair of iterators that yield the range of valid bond indices.
const PrivateGraph & inner() const
Const-access to library-internal graph representation class.
Library internal graph class wrapping BGL types.
Definition: PrivateGraph.h:26
AtomEnvironmentComponents
For bitmasks grouping components of immediate atom environments.
Definition: Types.h:103
BondType
Discrete bond type numeration.
Definition: Types.h:26
std::size_t AtomIndex
Unsigned integer atom index type. Used to refer to particular atoms.
Definition: Types.h:51
Additions to Boost namespace for BGL compatibility of custom graph classes.
Definition: Gor1.h:30
Type used to refer to particular bonds. Orders first < second.
Definition: Types.h:54
Definition: GraphInterface.h:21
Homogeneous pair of iterators with begin and end member fns.
Definition: IteratorRange.h:26