Template Class LocalSet

Nested Relationships

Class Documentation

template <typename T, typename ELEM_COMPARE = MemCmp<T>>
class LocalSet

The LocalSet data structure.

SHAD’s LocalSet is a “local”, unordered, set. LocalSets can be used ONLY on the Locality on which they are created.

Template Parameters
  • T: type of the entries stored in the set.
  • ELEM_COMPARE: key comparison function; default is MemCmp<T>.

Public Types

template<>
using value_type = T
template<>
using iterator = lset_iterator<LocalSet<T, ELEM_COMPARE>, const T>
template<>
using const_iterator = lset_iterator<LocalSet<T, ELEM_COMPARE>, const T>

Public Functions

LocalSet(const size_t numInitBuckets = 16)

Constructor.

Parameters
  • numInitBuckets: initial number of Buckets.

size_t Size() const

Size of the set (number of entries).

Return
the size of the set.

std::pair<typename LocalSet<T, ELEM_COMPARE>::iterator, bool> Insert(const T &element)

Insert an element in the set.

Return
a pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.
Parameters
  • element: the element to insert.

void AsyncInsert(rt::Handle &handle, const T &element)

Asynchronously Insert an element in the set.

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.
  • element: the element to insert.

void Erase(const T &element)

Remove an element from the set.

Parameters
  • element: the element to remove.

void AsyncErase(rt::Handle &handle, const T &element)

Asynchronously removen element from the set.

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.
  • element: the element to insert.

void Clear()

Clear the content of the set.

void Reset(size_t expectedEntries)

Clear the content of the set.

bool Find(const T &element)

Check if the set contains a given element.

Return
true if the element is found, false otherwise.
Parameters
  • element: the element to find.

void AsyncFind(rt::Handle &handle, const T &element, bool *found)

Asynchronously check if the set contains a given element.

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.
  • element: the element to find.
  • found: the address where to store the result of the operation.

template <typename ApplyFunT, typename... Args>
void ForEachElement(ApplyFunT &&function, Args&... args)

Apply a user-defined function to each element in the set.

Template Parameters
  • ApplyFunT: User-defined function type. The function prototype should be:
    void(const T&, Args&);
    
  • ...Args: Types of the function arguments.
Parameters
  • function: The function to apply.
  • args: The function arguments.

template <typename ApplyFunT, typename... Args>
void AsyncForEachElement(rt::Handle &handle, ApplyFunT &&function, Args&... args)

Asynchronously apply a user-defined function to each element in the set.

Warning
Asynchronous operations are guaranteed to have completed. only after calling the rt::waitForCompletion(rt::Handle &handle) method.
Template Parameters
  • ApplyFunT: User-defined function type. The function prototype should be:
    void(shad::rt::Handle&, const T&, Args&);
    
  • ...Args: Types of the function arguments.
Parameters
  • handle: Reference to the handle. to be used to wait for completion.
  • function: The function to apply.
  • args: The function arguments.

void PrintAllElements()

Print all the entries in the set.

Warning
std::ostream & operator<< must be defined for T.

iterator begin()
iterator end()
const_iterator cbegin()
const_iterator cend()

Protected Functions

template <typename ApplyFunT, typename SrcT, typename... Args>
void AsyncForEachNeighbor(rt::Handle &handle, ApplyFunT &&function, SrcT src, Args... args)
template <typename ApplyFunT, typename SrcT, typename... Args>
void ForEachNeighbor(ApplyFunT &&function, SrcT src, Args... args)