mc2lib
Public Types | Public Member Functions | List of all members
mc2lib::sets::RelationSeq< Ts > Class Template Reference

#include <sets.hpp>

Inheritance diagram for mc2lib::sets::RelationSeq< Ts >:
mc2lib::sets::RelationOp< Ts >

Public Types

typedef Ts::Element Element
 

Public Member Functions

 RelationSeq ()
 
 RelationSeq (std::vector< Relation< Ts >> v)
 
RelationSeqoperator+= (const Relation< Ts > &rhs)
 
RelationSeqoperator+= (Relation< Ts > &&rhs)
 
RelationSeqoperator+= (const RelationSeq &rhs)
 
RelationOp< Ts > & EvalInplace () override
 
Relation< Ts > Eval () const override
 
bool R (const Element &e1, const Element &e2, typename Relation< Ts >::Path *path=nullptr, std::size_t seq=0) const
 
bool Irreflexive (typename Relation< Ts >::Path *cyclic=nullptr) const
 
- Public Member Functions inherited from mc2lib::sets::RelationOp< Ts >
 RelationOp ()
 
 RelationOp (std::vector< Relation< Ts >> rels)
 
void Clear ()
 
Relation< Ts > EvalClear ()
 

Additional Inherited Members

- Protected Member Functions inherited from mc2lib::sets::RelationOp< Ts >
void Add (const Relation< Ts > &er)
 
void Add (Relation< Ts > &&er)
 
void Add (const std::vector< Relation< Ts >> &rels)
 
- Protected Attributes inherited from mc2lib::sets::RelationOp< Ts >
std::vector< Relation< Ts > > rels_
 

Detailed Description

template<class Ts>
class mc2lib::sets::RelationSeq< Ts >

Operator ";".

Member Typedef Documentation

§ Element

template<class Ts>
typedef Ts::Element mc2lib::sets::RelationSeq< Ts >::Element

Constructor & Destructor Documentation

§ RelationSeq() [1/2]

template<class Ts>
mc2lib::sets::RelationSeq< Ts >::RelationSeq ( )
inline

§ RelationSeq() [2/2]

template<class Ts>
mc2lib::sets::RelationSeq< Ts >::RelationSeq ( std::vector< Relation< Ts >>  v)
inlineexplicit

Member Function Documentation

§ Eval()

template<class Ts>
Relation<Ts> mc2lib::sets::RelationSeq< Ts >::Eval ( ) const
inlineoverridevirtual

Evaluate operator, computing the result of the opertor.

Returns
Relation representing view of operator.

Implements mc2lib::sets::RelationOp< Ts >.

§ EvalInplace()

template<class Ts>
RelationOp<Ts>& mc2lib::sets::RelationSeq< Ts >::EvalInplace ( )
inlineoverridevirtual

Evaluate in-place, where postcondition is rels_.size() <= 1. This avoids some of the copying overhead of Eval(), and can therefore be more efficient.

Returns
Reference to this object.

Implements mc2lib::sets::RelationOp< Ts >.

§ Irreflexive()

template<class Ts>
bool mc2lib::sets::RelationSeq< Ts >::Irreflexive ( typename Relation< Ts >::Path *  cyclic = nullptr) const
inline

Check if irreflexive.

Parameters
cyclicOptional parameter, in which the cycle is returned, if result is false.
Returns
true if irreflexive, false otherwise.

§ operator+=() [1/3]

template<class Ts>
RelationSeq& mc2lib::sets::RelationSeq< Ts >::operator+= ( const Relation< Ts > &  rhs)
inline

§ operator+=() [2/3]

template<class Ts>
RelationSeq& mc2lib::sets::RelationSeq< Ts >::operator+= ( Relation< Ts > &&  rhs)
inline

§ operator+=() [3/3]

template<class Ts>
RelationSeq& mc2lib::sets::RelationSeq< Ts >::operator+= ( const RelationSeq< Ts > &  rhs)
inline

§ R()

template<class Ts>
bool mc2lib::sets::RelationSeq< Ts >::R ( const Element e1,
const Element e2,
typename Relation< Ts >::Path *  path = nullptr,
std::size_t  seq = 0 
) const
inline

Check if (e1, e2) is in the relation. This effectively does a search if there is an edge from e1 to e2.

Parameters
e1First element.
e2Second element.
pathOptional; return path from e1 to e2.
Returns
true if related, false otherwise.

The documentation for this class was generated from the following file: