ngscopeclient 0.1-dev+51fbda87c
Public Types | Public Member Functions | Protected Attributes | List of all members
Bijection< T1, T2, Compare1, Compare2 > Class Template Reference

A strict one-to-one mapping from objects of type T1 to type T2 (which must be different types). More...

#include <Bijection.h>

Public Types

typedef std::map< T1, T2, Compare1 > forwardType
 Type of the forward map.
 
typedef std::map< T2, T1, Compare2 > reverseType
 Type of the reverse map.
 

Public Member Functions

forwardType::const_iterator begin ()
 Get an iterator to the start of the forward map.
 
forwardType::const_iterator end ()
 Get an iterator to the end of the forward map.
 
void emplace (T1 a, T2 b)
 Adds a new entry to the bijection. More...
 
const T1 & operator[] (T2 key)
 Looks up an object in the reverse direction. More...
 
const T2 & operator[] (T1 key)
 Looks up an object in the forward direction. More...
 
bool HasEntry (T1 key)
 Determines if an object is present in the forward mapping. More...
 
bool HasEntry (T2 key)
 Determines if an object is present in the reverse mapping. More...
 
void clear ()
 Erase all entries in the bijection.
 
void erase (T1 key)
 Erase an entry given a forward key. More...
 
void erase (T2 key)
 Erase an entry given a reverse key. More...
 
void replace (T2 oldval, T2 newval)
 Replaces one value with another, keeping the keys identical.
 
size_t size ()
 Return the number of entries in the bijection.
 

Protected Attributes

forwardType m_forwardMap
 Map of object-to-object in the forward direction.
 
reverseType m_reverseMap
 Map of object-to-object in the reverse direction.
 

Detailed Description

template<class T1, class T2, typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
class Bijection< T1, T2, Compare1, Compare2 >

A strict one-to-one mapping from objects of type T1 to type T2 (which must be different types).

Internally implemented as two synchronized std::map instances

Member Function Documentation

◆ emplace()

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
void Bijection< T1, T2, Compare1, Compare2 >::emplace ( T1  a,
T2  b 
)
inline

Adds a new entry to the bijection.

Neither a nor b is allowed to be in the map when this function is called.

Parameters
aFirst object
bSecond object

◆ erase() [1/2]

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
void Bijection< T1, T2, Compare1, Compare2 >::erase ( T1  key)
inline

Erase an entry given a forward key.

Parameters
keyThe object to remove

◆ erase() [2/2]

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
void Bijection< T1, T2, Compare1, Compare2 >::erase ( T2  key)
inline

Erase an entry given a reverse key.

Parameters
keyThe object to remove

◆ HasEntry() [1/2]

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
bool Bijection< T1, T2, Compare1, Compare2 >::HasEntry ( T1  key)
inline

Determines if an object is present in the forward mapping.

Parameters
keyThe object being looked up

◆ HasEntry() [2/2]

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
bool Bijection< T1, T2, Compare1, Compare2 >::HasEntry ( T2  key)
inline

Determines if an object is present in the reverse mapping.

Parameters
keyThe object being looked up

◆ operator[]() [1/2]

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
const T2 & Bijection< T1, T2, Compare1, Compare2 >::operator[] ( T1  key)
inline

Looks up an object in the forward direction.

Parameters
keyThe object being looked up

◆ operator[]() [2/2]

template<class T1 , class T2 , typename Compare1 = std::less<T1>, typename Compare2 = std::less<T2>>
const T1 & Bijection< T1, T2, Compare1, Compare2 >::operator[] ( T2  key)
inline

Looks up an object in the reverse direction.

Parameters
keyThe object being looked up

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