namespace internal

// namespaces

namespace xf::graph::internal::bfs
namespace xf::graph::internal::calc_degree
namespace xf::graph::internal::connected_components
namespace xf::graph::internal::convert_csr_csc
namespace xf::graph::internal::diameter
namespace xf::graph::internal::hash_group_aggregate
namespace xf::graph::internal::label_propagation
namespace xf::graph::internal::mis
namespace xf::graph::internal::mssp
namespace xf::graph::internal::mst
namespace xf::graph::internal::pagerank
namespace xf::graph::internal::pagerankMultiChannel
namespace xf::graph::internal::scc
namespace xf::graph::internal::sssp
    namespace xf::graph::internal::sssp::nopred
    namespace xf::graph::internal::sssp::pred
namespace xf::graph::internal::triangle_count

// structs

template <
    class T_MEM,
    int W_ADDR,
    int SIZE
    >
struct AggRAM_base

template <
    class T_V,
    class T_W
    >
struct CkKins

struct GetVout

template <class T_V>
struct ValAddr

template <class TG>
struct unitCidGain

struct unitCidGain_d
struct unitCidGain_ll
struct unitCidTarKin
struct unitCkKin
struct unitECW
struct unitEW
struct unitKiSelf
struct unitNCkKin
struct unitVC
struct unitVCD
struct unitVCDN
struct unitVCDe
struct unitVCN
struct unitVCNKi
struct unitVD
struct unitVF

// unions

union DoubleUnit64
union GetAggout
union GetCout
union GetEout
union StrmBus_L
union StrmBus_M
union StrmBus_S
union StrmBus_XL

template <typename MType>
union f_cast

template <>
union f_cast <unsigned int>

template <>
union f_cast <float>

template <>
union f_cast <int>

template <>
union f_cast <ap_uint <64>>

template <>
union f_cast <long long>

template <>
union f_cast <ap_uint <32>>

template <>
union f_cast <double>

template <
    typename MType,
    typename DType
    >
union f_cast_

template <typename DT>
union f_cast_ <DT, ap_uint <64>>

template <typename DT>
union f_cast_ <DT, ap_uint <32>>

union uint2int32

// classes

template <
    class T_MEM,
    int W_ADDR,
    int SIZE
    >
class AggRAM

template <
    typename DT,
    int W,
    int BIT_E = sizeof(DT) * 8
    >
class AxiMap

template <
    class T_V,
    class T_W,
    int W_HASH,
    int W_MEM
    >
class HashAgg

template <
    class T_V,
    class T_W,
    int SIZE_REM
    >
class ScanAgg