mc2lib
Classes | Namespaces | Functions
sets.hpp File Reference
#include <cassert>
#include <cstddef>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

class  mc2lib::sets::Set< Ts >
 Abstracts over container library's set implementation. More...
 
class  mc2lib::sets::Relation< Ts >
 
class  mc2lib::sets::Relation< Ts >::R_impl
 
class  mc2lib::sets::RelationOp< Ts >
 
class  mc2lib::sets::RelationSeq< Ts >
 
struct  mc2lib::sets::Types< E, Hash >
 Helper class to instantiate types used by Set, Relation, etc. More...
 

Namespaces

 mc2lib
 
 mc2lib::sets
 Sets and maps exposed in a restricted set of set theory.
 

Functions

template<class T >
bool mc2lib::sets::AllBitmask (T mask, T all)
 
template<class T >
bool mc2lib::sets::AnyBitmask (T mask, T any)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator| (const Set< Ts > &lhs, const Set< Ts > &rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator| (Set< Ts > &&lhs, const Set< Ts > &rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator| (const Set< Ts > &lhs, Set< Ts > &&rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator| (Set< Ts > &&lhs, Set< Ts > &&rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator- (const Set< Ts > &lhs, const Set< Ts > &rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator- (Set< Ts > &&lhs, const Set< Ts > &rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator- (const Set< Ts > &lhs, Set< Ts > &&rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator- (Set< Ts > &&lhs, Set< Ts > &&rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator & (const Set< Ts > &lhs, const Set< Ts > &rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator & (Set< Ts > &&lhs, const Set< Ts > &rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator & (const Set< Ts > &lhs, Set< Ts > &&rhs)
 
template<class Ts >
Set< Ts > mc2lib::sets::operator & (Set< Ts > &&lhs, Set< Ts > &&rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator* (const Set< Ts > &lhs, const Set< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator| (const Relation< Ts > &lhs, const Relation< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator| (Relation< Ts > &&lhs, const Relation< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator| (const Relation< Ts > &lhs, Relation< Ts > &&rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator| (Relation< Ts > &&lhs, Relation< Ts > &&rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator- (const Relation< Ts > &lhs, const Relation< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator- (Relation< Ts > &&lhs, const Relation< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator- (const Relation< Ts > &lhs, Relation< Ts > &&rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator- (Relation< Ts > &&lhs, Relation< Ts > &&rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator & (const Relation< Ts > &lhs, const Relation< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator & (Relation< Ts > &&lhs, const Relation< Ts > &rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator & (const Relation< Ts > &lhs, Relation< Ts > &&rhs)
 
template<class Ts >
Relation< Ts > mc2lib::sets::operator & (Relation< Ts > &&lhs, Relation< Ts > &&rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (const RelationSeq< Ts > &lhs, const Relation< Ts > &rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (RelationSeq< Ts > &&lhs, const Relation< Ts > &rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (const RelationSeq< Ts > &lhs, Relation< Ts > &&rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (RelationSeq< Ts > &&lhs, Relation< Ts > &&rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (const RelationSeq< Ts > &lhs, const RelationSeq< Ts > &rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (RelationSeq< Ts > &&lhs, const RelationSeq< Ts > &rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (const RelationSeq< Ts > &lhs, RelationSeq< Ts > &&rhs)
 
template<class Ts >
RelationSeq< Ts > mc2lib::sets::operator+ (RelationSeq< Ts > &&lhs, RelationSeq< Ts > &&rhs)