#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_ str& max_gr = {}, const bool& with_grading = true, const bool& with_label = true, const bool& is_4ended = true) const -> std::string  - 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.