mc2lib
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mc2lib::sets::RelationOp< Ts > Class Template Referenceabstract

#include <sets.hpp>

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

Public Member Functions

 RelationOp ()
 
 RelationOp (std::vector< Relation< Ts >> rels)
 
virtual RelationOpEvalInplace ()=0
 
virtual Relation< Ts > Eval () const =0
 
void Clear ()
 
Relation< Ts > EvalClear ()
 

Protected Member Functions

void Add (const Relation< Ts > &er)
 
void Add (Relation< Ts > &&er)
 
void Add (const std::vector< Relation< Ts >> &rels)
 

Protected Attributes

std::vector< Relation< Ts > > rels_
 

Detailed Description

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

Relation operator base class. No derived class shall define a destructor!

Constructor & Destructor Documentation

§ RelationOp() [1/2]

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

§ RelationOp() [2/2]

template<class Ts >
mc2lib::sets::RelationOp< Ts >::RelationOp ( std::vector< Relation< Ts >>  rels)
inlineexplicit

Member Function Documentation

§ Add() [1/3]

template<class Ts >
void mc2lib::sets::RelationOp< Ts >::Add ( const Relation< Ts > &  er)
inlineprotected

§ Add() [2/3]

template<class Ts >
void mc2lib::sets::RelationOp< Ts >::Add ( Relation< Ts > &&  er)
inlineprotected

§ Add() [3/3]

template<class Ts >
void mc2lib::sets::RelationOp< Ts >::Add ( const std::vector< Relation< Ts >> &  rels)
inlineprotected

§ Clear()

template<class Ts >
void mc2lib::sets::RelationOp< Ts >::Clear ( )
inline

§ Eval()

template<class Ts >
virtual Relation<Ts> mc2lib::sets::RelationOp< Ts >::Eval ( ) const
pure virtual

Evaluate operator, computing the result of the opertor.

Returns
Relation representing view of operator.

Implemented in mc2lib::sets::RelationSeq< Ts >.

§ EvalClear()

template<class Ts >
Relation<Ts> mc2lib::sets::RelationOp< Ts >::EvalClear ( )
inline

Evaluate operator in-place, and clearing it, returning the evaluated Relation. Optimized for move, and should be used where the operator is used as a temporary.

Returns
Relation representing view of operator before call.

§ EvalInplace()

template<class Ts >
virtual RelationOp& mc2lib::sets::RelationOp< Ts >::EvalInplace ( )
pure virtual

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.

Implemented in mc2lib::sets::RelationSeq< Ts >.

Member Data Documentation

§ rels_

template<class Ts >
std::vector<Relation<Ts> > mc2lib::sets::RelationOp< Ts >::rels_
protected

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