hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
hobbes::equivalence_mapping< K, V, KVLift, VPlus > Class Template Reference

#include <unionfind.H>

Inheritance diagram for hobbes::equivalence_mapping< K, V, KVLift, VPlus >:
Inheritance graph
Collaboration diagram for hobbes::equivalence_mapping< K, V, KVLift, VPlus >:
Collaboration graph

Public Member Functions

 equivalence_mapping ()
 
size_t size () const
 
V & find (const K &k)
 
void join (const K &k0, const K &k1)
 
size_t merge (const equivalence_mapping< K, V, KVLift, VPlus > &rhs)
 
std::vector< K > values () const
 

Private Types

typedef eqsetmem< K, V > node_t
 
typedef std::unique_ptr< node_tnodep
 
typedef std::unordered_map< K, nodepnodes_t
 

Private Member Functions

node_tfindNode (const K &k)
 

Static Private Member Functions

static node_tfindRepresentative (node_t *n)
 

Private Attributes

size_t eqsz
 
nodes_t nodes
 

Member Typedef Documentation

◆ node_t

template<typename K, typename V, typename KVLift, typename VPlus>
typedef eqsetmem<K, V> hobbes::equivalence_mapping< K, V, KVLift, VPlus >::node_t
private

◆ nodep

template<typename K, typename V, typename KVLift, typename VPlus>
typedef std::unique_ptr<node_t> hobbes::equivalence_mapping< K, V, KVLift, VPlus >::nodep
private

◆ nodes_t

template<typename K, typename V, typename KVLift, typename VPlus>
typedef std::unordered_map<K, nodep> hobbes::equivalence_mapping< K, V, KVLift, VPlus >::nodes_t
private

Constructor & Destructor Documentation

◆ equivalence_mapping()

template<typename K, typename V, typename KVLift, typename VPlus>
hobbes::equivalence_mapping< K, V, KVLift, VPlus >::equivalence_mapping ( )
inline

Member Function Documentation

◆ find()

template<typename K, typename V, typename KVLift, typename VPlus>
V& hobbes::equivalence_mapping< K, V, KVLift, VPlus >::find ( const K &  k)
inline

◆ findNode()

template<typename K, typename V, typename KVLift, typename VPlus>
node_t* hobbes::equivalence_mapping< K, V, KVLift, VPlus >::findNode ( const K &  k)
inlineprivate

◆ findRepresentative()

template<typename K, typename V, typename KVLift, typename VPlus>
static node_t* hobbes::equivalence_mapping< K, V, KVLift, VPlus >::findRepresentative ( node_t n)
inlinestaticprivate

◆ join()

template<typename K, typename V, typename KVLift, typename VPlus>
void hobbes::equivalence_mapping< K, V, KVLift, VPlus >::join ( const K &  k0,
const K &  k1 
)
inline

◆ merge()

template<typename K, typename V, typename KVLift, typename VPlus>
size_t hobbes::equivalence_mapping< K, V, KVLift, VPlus >::merge ( const equivalence_mapping< K, V, KVLift, VPlus > &  rhs)
inline

◆ size()

template<typename K, typename V, typename KVLift, typename VPlus>
size_t hobbes::equivalence_mapping< K, V, KVLift, VPlus >::size ( ) const
inline

◆ values()

template<typename K, typename V, typename KVLift, typename VPlus>
std::vector<K> hobbes::equivalence_mapping< K, V, KVLift, VPlus >::values ( ) const
inline

Member Data Documentation

◆ eqsz

template<typename K, typename V, typename KVLift, typename VPlus>
size_t hobbes::equivalence_mapping< K, V, KVLift, VPlus >::eqsz
private

◆ nodes

template<typename K, typename V, typename KVLift, typename VPlus>
nodes_t hobbes::equivalence_mapping< K, V, KVLift, VPlus >::nodes
private

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