Template Class Hashmap¶
- Defined in File hashmap.h
Nested Relationships¶
Inheritance Relationships¶
Base Type¶
public shad::AbstractDataStructure< Hashmap< KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY > >
(Template Class AbstractDataStructure)
Class Documentation¶
-
template <typename KTYPE, typename VTYPE, typename KEY_COMPARE = MemCmp<KTYPE>, typename INSERT_POLICY = Overwriter<VTYPE>>
classHashmap
: public shad::AbstractDataStructure<Hashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>>¶ The Hashmap data structure.
SHAD’s Hashmap is a distributed, thread-safe, associative container.
- Warning
- obects of type KTYPE and VTYPE need to be trivially copiable.
- Template Parameters
KTYPE
: type of the hashmap keys.VTYPE
: type of the hashmap values.KEY_COMPARE
: key comparison function; default is MemCmp<KTYPE>.
- Template Parameters
INSERT_POLICY
: insertion policy; default is overwrite (i.e. insertions overwrite previous values associated to the same key, if any).
Public Types
-
template<>
usingvalue_type
= std::pair<KTYPE, VTYPE>¶
-
template<>
usingHmapT
= Hashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>¶
-
template<>
usingLMapT
= LocalHashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>¶
-
template<>
usingObjectID
= typename AbstractDataStructure::ObjectID¶
-
template<>
usingShadHashmapPtr
= typename AbstractDataStructure<HmapT>::SharedPtr¶
-
template<>
usingiterator
= map_iterator<Hashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>, const std::pair<KTYPE, VTYPE>, std::pair<KTYPE, VTYPE>>¶
-
template<>
usingconst_iterator
= map_iterator<Hashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>, const std::pair<KTYPE, VTYPE>, std::pair<KTYPE, VTYPE>>¶
-
template<>
usinglocal_iterator
= lmap_iterator<LocalHashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>, const std::pair<KTYPE, VTYPE>>¶
-
template<>
usingconst_local_iterator
= lmap_iterator<LocalHashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>, const std::pair<KTYPE, VTYPE>>¶
-
template<>
usingBuffersVector
= typename impl::BuffersVector<EntryT, HmapT>¶
-
template<>
usingLookupResult
= typename LocalHashmap::LookupResult¶
Public Functions
-
ObjectID
GetGlobalID
() const¶ Create method.
Creates a newhashmap instance.
- Return
- A shared pointer to the newly created hashmap instance. Getter of the Global Identifier.
- Return
- The global identifier associated with the hashmap instance.
- Parameters
numEntries
: Expected number of entries.
-
size_t
Size
() const¶ Overall size of the hashmap (number of entries).
- Warning
- Calling the size method may result in one-to-all communication among localities to retrieve consinstent information.
- Return
- the size of the hashmap.
-
std::pair<typename Hashmap<KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY>::iterator, bool>
Insert
(const KTYPE &key, const VTYPE &value)¶ Insert a key-value pair in the hashmap.
- Return
- an iterator either to the inserted value or to the previously inserted value that prevented the insertion.
- Parameters
key
: the key.value
: the value to copy into the hashmap.
-
void
AsyncInsert
(rt::Handle &handle, const KTYPE &key, const VTYPE &value)¶ Asynchronously Insert a key-value pair in the hashmap.
- Warning
- Asynchronous operations are guaranteed to have completed only after calling the rt::waitForCompletion(rt::Handle &handle) method.
- Return
- a pointer to the value if the the key-value was inserted or a pointer to a previously inserted value.
- Parameters
handle
: Reference to the handle to be used to wait for completion.key
: the key.value
: the value to copy into the hashMap.
-
void
BufferedInsert
(const KTYPE &key, const VTYPE &value)¶ Buffered Insert method. Inserts a key-value pair, using aggregation buffers.
- Warning
- Insertions are finalized only after calling the WaitForBufferedInsert() method.
- Parameters
key
: The key.value
: The value.
-
void
BufferedAsyncInsert
(rt::Handle &handle, const KTYPE &key, const VTYPE &value)¶ Asynchronous Buffered Insert method. Asynchronously inserts a key-value pair, using aggregation buffers.
- Warning
- asynchronous buffered insertions are finalized only after calling the rt::waitForCompletion(rt::Handle &handle) method AND the WaitForBufferedInsert() method, in this order.
- Parameters
handle
: Reference to the handlekey
: The key.value
: The value.
-
void
WaitForBufferedInsert
()¶ Finalize method for buffered insertions.
-
void
Erase
(const KTYPE &key)¶ Remove a key-value pair from the hashmap.
- Parameters
key
: the key.
-
void
AsyncErase
(rt::Handle &handle, const KTYPE &key)¶ Asynchronously remove a key-value pair from the hashmap.
- Warning
- Asynchronous operations are guaranteed to have completed only after calling the rt::waitForCompletion(rt::Handle &handle) method.
- Parameters
handle
: Reference to the handle to be used to wait for completion.key
: the key.
-
void
Clear
()¶ Clear the content of the hashmap.
-
bool
Lookup
(const KTYPE &key, VTYPE *res)¶ Get the value associated to a key.
- Return
- true if the entry is found, false otherwise.
- Parameters
key
: the key.res
: a pointer to the value if the the key-value was found and NULL if it does not exists.
-
void
AsyncLookup
(rt::Handle &handle, const KTYPE &key, LookupResult *res)¶ Asynchronous lookup method.
- Warning
- Asynchronous operations are guaranteed to have completed. only after calling the rt::waitForCompletion(rt::Handle &handle) method.
- Parameters
handle
: Reference to the handle. to be used to wait for completion.key
: The key.res
: The result of the lookup operation.
-
template <typename ApplyFunT, typename... Args>
voidApply
(const KTYPE &key, ApplyFunT &&function, Args&... args)¶ Apply a user-defined function to a key-value pair.
- Template Parameters
ApplyFunT
: User-defined function type. The function prototype should be:void(const KTYPE&, VTYPE&, Args&);
...Args
: Types of the function arguments.
- Parameters
key
: The key.function
: The function to apply.args
: The function arguments.
-
template <typename ApplyFunT, typename... Args>
voidAsyncApply
(rt::Handle &handle, const KTYPE &key, ApplyFunT &&function, Args&... args)¶ Asynchronously apply a user-defined function to a key-value pair.
- Template Parameters
ApplyFunT
: User-defined function type. The function prototype should be:void(rt::Handle &handle, const KTYPE&, VTYPE&, Args&);
...Args
: Types of the function arguments.
- Parameters
handle
: Reference to the handle.key
: The key.function
: The function to apply.args
: The function arguments.
-
template <typename ApplyFunT, typename... Args>
voidForEachEntry
(ApplyFunT &&function, Args&... args)¶ Apply a user-defined function to each key-value pair.
- Template Parameters
ApplyFunT
: User-defined function type. The function prototype should be:void(const KTYPE&, VTYPE&, Args&);
...Args
: Types of the function arguments.
- Parameters
function
: The function to apply.args
: The function arguments.
-
template <typename ApplyFunT, typename... Args>
voidAsyncForEachEntry
(rt::Handle &handle, ApplyFunT &&function, Args&... args)¶ Asynchronously apply a user-defined function to each key-value pair.
- Template Parameters
ApplyFunT
: User-defined function type. The function prototype should be:void(shad::rt::Handle&, const KTYPE&, VTYPE&, Args&);
...Args
: Types of the function arguments.
- Parameters
handle
: Reference to the handle.function
: The function to apply.args
: The function arguments.
-
template <typename ApplyFunT, typename... Args>
voidForEachKey
(ApplyFunT &&function, Args&... args)¶ Apply a user-defined function to each key.
- Template Parameters
ApplyFunT
: User-defined function type. The function prototype should be:void(const KTYPE&, Args&);
...Args
: Types of the function arguments.
- Parameters
function
: The function to apply.args
: The function arguments.
-
template <typename ApplyFunT, typename... Args>
voidAsyncForEachKey
(rt::Handle &handle, ApplyFunT &&function, Args&... args)¶ Asynchronously apply a user-defined function to each key.
- Template Parameters
ApplyFunT
: User-defined function type. The function prototype should be:void(shad::rt::Handle&, const KTYPE&, Args&);
...Args
: Types of the function arguments.
- Parameters
handle
: Reference to the handle.function
: The function to apply.args
: The function arguments.
-
void
PrintAllEntries
()¶
-
iterator
begin
()¶
-
iterator
end
()¶
-
const_iterator
cbegin
() const¶
-
const_iterator
cend
() const¶
-
const_iterator
begin
() const¶
-
const_iterator
end
() const¶
-
local_iterator
local_begin
()¶
-
local_iterator
local_end
()¶
-
const_local_iterator
clocal_begin
()¶
-
const_local_iterator
clocal_end
()¶
-
std::pair<iterator, bool>
insert
(const value_type &value)¶
-
std::pair<iterator, bool>
insert
(const_iterator, const value_type &value)¶
-
void
buffered_async_flush
()¶
Protected Functions
-
Hashmap
(ObjectID oid, const size_t numEntries)¶
Friends
-
friend
shad::Hashmap::map_iterator< Hashmap< KTYPE, VTYPE, KEY_COMPARE, INSERT_POLICY >, const std::pair< KTYPE, VTYPE >, std::pair< KTYPE, VTYPE > >
-
struct
EntryT
¶