Template Class AttributedEdgeIndexStorage

Class Documentation

template <typename SrcT, typename DestT, typename SrcAttrT, typename NeighborsStorageT = AttrEdgesPair<SrcAttrT, DestT>>
class AttributedEdgeIndexStorage

Public Types

template<>
using SrcAttributesT = SrcAttrT
template<>
using NeighborListStorageT = NeighborsStorageT
template<>
using EdgeListStorageT = LocalHashmap<SrcT, NeighborsStorageT, IDCmp<SrcT>, ElementInserter>

Public Functions

AttributedEdgeIndexStorage(const size_t numVertices)
SrcAttributesT *GetVertexAttributes(const SrcT &src)
bool GetVertexAttributes(const SrcT &src, SrcAttributesT *attr)
template <typename ApplyFunT, typename... Args>
void VertexAttributesApply(const SrcT &src, ApplyFunT &&function, Args&... args)

Public Members

EdgeListStorageT edgeList_

Public Static Functions

template <typename ApplyFunT, typename... Args, std::size_t... is>
static void CallVertexAttributesApplyFun(AttributedEdgeIndexStorage<SrcT, DestT, SrcAttrT, NeighborListStorageT> *stPtr, const SrcT &src, ApplyFunT function, std::tuple<Args...> &args, std::index_sequence<is...>)

Public Static Attributes

constexpr size_t kEdgeListChunkSize_ = 3072 / sizeof(DestT)
struct ElementInserter

Public Functions

template<>
void operator()(NeighborsStorageT *const lhs, const NeighborsStorageT&)

Public Static Functions

template<>
static void Insert(NeighborsStorageT *const lhs, const DestT value)
template<>
static void Insert(NeighborsStorageT *const lhs, const FlatEdgeList values)
template<>
static void Insert(NeighborsStorageT *const lhs, const LocalEdgeListChunk &chunk)
struct FlatEdgeList

Public Members

template<>
const DestT *values
template<>
size_t numValues
template<>
bool overwrite
struct LocalEdgeListChunk

Public Functions

template<>
LocalEdgeListChunk(size_t _numDest, bool _ow, DestT *_dest)

Public Members

template<>
size_t numDest
template<>
size_t chunkSize
template<>
bool overwrite
template<>
std::array<DestT, kEdgeListChunkSize_> destinations