libgrape-lite
A C++ library for parallel graph processing
Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
grape::IdIndexer< KEY_T, INDEX_T > Class Template Reference

Public Types

using key_buffer_t = typename id_indexer_impl::KeyBuffer< KEY_T >
 
using ind_buffer_t = std::vector< INDEX_T, Allocator< INDEX_T > >
 
using dist_buffer_t = std::vector< int8_t, Allocator< int8_t > >
 

Public Member Functions

 IdIndexer (IdIndexer &&rhs)
 
IdIndexeroperator= (IdIndexer &&rhs)
 
size_t entry_num () const
 
size_t memory_usage () const
 
bool add (const KEY_T &oid, INDEX_T &lid)
 
bool add (KEY_T &&oid, INDEX_T &lid)
 
bool _add (const KEY_T &oid, size_t hash_value, INDEX_T &lid)
 
bool _add (KEY_T &&oid, size_t hash_value, INDEX_T &lid)
 
void _add (const KEY_T &oid)
 
void _add (KEY_T &&oid)
 
size_t bucket_count () const
 
bool empty () const
 
size_t size () const
 
bool get_key (INDEX_T lid, KEY_T &oid) const
 
bool get_index (const KEY_T &oid, INDEX_T &lid) const
 
bool _get_index (const KEY_T &oid, size_t hash, INDEX_T &lid) const
 
void swap (IdIndexer< KEY_T, INDEX_T > &rhs)
 
const key_buffer_t & keys () const
 
key_buffer_t & keys ()
 
template<typename IOADAPTOR_T >
void Serialize (std::unique_ptr< IOADAPTOR_T > &writer)
 
template<typename IOADAPTOR_T >
void Deserialize (std::unique_ptr< IOADAPTOR_T > &reader)
 
void serialize_to_mem (std::vector< char > &buf) const
 

Private Member Functions

void emplace (INDEX_T lid)
 
void emplace_new_value (int8_t distance_from_desired, size_t index, INDEX_T lid)
 
void grow ()
 
void rehash (size_t num_buckets)
 
void reset_to_empty_state ()
 

Static Private Member Functions

static int8_t compute_max_lookups (size_t num_buckets)
 

Private Attributes

key_buffer_t keys_
 
ind_buffer_t indices_
 
dist_buffer_t distances_
 
ska::ska::prime_number_hash_policy hash_policy_
 
int8_t max_lookups_ = id_indexer_impl::min_lookups - 1
 
size_t num_elements_ = 0
 
size_t num_slots_minus_one_ = 0
 
std::hash< KEY_T > hasher_
 

Friends

template<typename _T , typename _Enable >
struct sync_comm::CommImpl