Apollo  6.0
Open source self driving car software
Classes | Public Member Functions | List of all members
apollo::cyber::base::AtomicHashMap< K, V, TableSize, std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type > Class Template Reference

A implementation of lock-free fixed size hash map. More...

#include <atomic_hash_map.h>

Collaboration diagram for apollo::cyber::base::AtomicHashMap< K, V, TableSize, std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type >:
Collaboration graph

Public Member Functions

 AtomicHashMap ()
 
 AtomicHashMap (const AtomicHashMap &other)=delete
 
AtomicHashMapoperator= (const AtomicHashMap &other)=delete
 
bool Has (K key)
 
bool Get (K key, V **value)
 
bool Get (K key, V *value)
 
void Set (K key)
 
void Set (K key, const V &value)
 
void Set (K key, V &&value)
 

Detailed Description

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
class apollo::cyber::base::AtomicHashMap< K, V, TableSize, std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type >

A implementation of lock-free fixed size hash map.

Template Parameters
KType of key, must be integral
VType of value
128Size of hash table
0Type traits, use for checking types of key & value

Constructor & Destructor Documentation

◆ AtomicHashMap() [1/2]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::AtomicHashMap ( )
inline

◆ AtomicHashMap() [2/2]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::AtomicHashMap ( const AtomicHashMap< K, V, TableSize, std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type > &  other)
delete

Member Function Documentation

◆ Get() [1/2]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
bool apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Get ( key,
V **  value 
)
inline

◆ Get() [2/2]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
bool apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Get ( key,
V *  value 
)
inline

◆ Has()

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
bool apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Has ( key)
inline

◆ operator=()

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
AtomicHashMap& apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::operator= ( const AtomicHashMap< K, V, TableSize, std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type > &  other)
delete

◆ Set() [1/3]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
void apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Set ( key)
inline

◆ Set() [2/3]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
void apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Set ( key,
const V &  value 
)
inline

◆ Set() [3/3]

template<typename K, typename V, std::size_t TableSize = 128, typename std::enable_if< std::is_integral< K >::value &&(TableSize &(TableSize - 1))==0, int >::type = 0>
void apollo::cyber::base::AtomicHashMap< K, V, TableSize, type >::Set ( key,
V &&  value 
)
inline

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