#include <sources/headers/Chain.h>
template<typename Coeff>
Clink struct
a single link a Chain
consists of an object (BNObj), a morphism (BNMor), and a boolean value rightarrow
which is true if the morphism starts at the specified generator. The morphism should consist of a single label or no label (in which case rightarrow
is undefined).
Constructors, destructors, conversion operators
 Clink(BNObj object, BNMor<Coeff> morphism, bool rightarrow)
 standard constructor
 Clink(const std::string& str)
 convert output of Clink::
to_string() back into chain; there is an ambiguity in the output, we cannot distinguish between an arrow S and S^2 if there is no label, unless we know what the next object is. This needs to be checked in Chain::Chain ( std::string ); The default is S.
Public functions

auto to_string(const max_
gr_ & max_gr = {}, const bool& with_grading = true, const bool& with_label = true, const bool& is_4ended = true) const > std::stringstr  string representation of a Clink
Public variables
 BNMor<Coeff> morphism
 morphism a of a clink
 BNObj object
 object x of a clink
 bool rightarrow
 true if x–(a)>, false if x<(a)– , undefined if morphism.is_0().
Function documentation
template<typename Coeff>
std::string Clink<Coeff>:: to_string(const max_gr_str & max_gr = {},
const bool& with_grading = true,
const bool& with_label = true,
const bool& is_4ended = true) const
string representation of a Clink
examples:
 without grading:
⬯~~(S)~>
 with grading:
h^16 q^47 δ^15/2 ⬮——D—>
⬯~>
is the same as⬯~~(S)~>
⬮—>
is the same as⬮——D—>
If with_label
is false
, a label will still be included if it is necessary for specifying the morphism. If is_4ended
is false
, the morphism will be interpreted as an element of the free polynomial ring in the variable , see BNAlgebra.h.