File clique_cache.hpp

namespace busclique

Variables

const vector<vector<size_t>> empty_emb
template<typename topo_spec>
class clique_cache
#include <clique_cache.hpp>

Public Functions

clique_cache(const clique_cache&) = delete
clique_cache(clique_cache&&) = delete
inline clique_cache(const cell_cache<topo_spec> &c, const bundle_cache<topo_spec> &b, size_t w)
template<typename C>
inline clique_cache(const cell_cache<topo_spec> &c, const bundle_cache<topo_spec> &b, size_t w, C &check)
inline ~clique_cache()
inline maxcache get(size_t i) const
inline void print()
inline bool extract_solution(vector<vector<size_t>> &emb) const

Private Functions

inline size_t memrows(size_t i) const
inline size_t memcols(size_t i) const
inline size_t memsize(size_t i) const
inline size_t memsize() const
template<typename C>
inline void compute_cache(C &check)
template<typename T, typename C, typename ...Corners>
inline void extend_cache(const T &prev, size_t h, size_t w, C &check, Corners... corners)
template<typename T, typename C, typename ...Corners>
inline void extend_cache(const T &prev, maxcache &next, size_t y0, size_t y1, size_t x0, size_t x1, C &check, corner c, Corners... corners)
template<typename T, typename C>
inline void extend_cache(const T &prev, maxcache &next, size_t y0, size_t y1, size_t x0, size_t x1, C &check, corner c)
inline corner inflate_first_ell(vector<vector<size_t>> &emb, size_t &y, size_t &x, size_t h, size_t w, corner c) const

Private Members

const cell_cache<topo_spec> &cells
const bundle_cache<topo_spec> &bundles
const size_t width
size_t *mem

Private Static Functions

static inline constexpr bool nocheck(size_t, size_t, size_t, size_t, size_t, size_t)

Friends

friend class clique_iterator< topo_spec >
template<typename topo_spec>
class clique_iterator
#include <clique_cache.hpp>

Public Functions

inline clique_iterator(const cell_cache<topo_spec> &c, const clique_cache<topo_spec> &q)
inline bool next(vector<vector<size_t>> &e)

Private Functions

inline bool advance()
inline bool grow_stack()

Private Members

const cell_cache<topo_spec> &cells
const clique_cache<topo_spec> &cliq
size_t width
vector<std::tuple<size_t, size_t, corner>> basepoints
vector<std::tuple<size_t, size_t, size_t, corner>> stack
vector<vector<size_t>> emb
template<typename topo_spec>
class clique_yield_cache
#include <clique_cache.hpp>

Public Functions

inline clique_yield_cache(const cell_cache<pegasus_spec> &cells)
inline clique_yield_cache(const cell_cache<chimera_spec> &cells)
inline const vector<vector<vector<size_t>>> &embeddings()

Private Functions

inline size_t emb_max_length(const vector<vector<size_t>> &emb) const
inline void process_cliques(const clique_cache<topo_spec> &cliques)
inline void compute_cache(const cell_cache<topo_spec> &cells)
inline void get_length_range(const bundle_cache<pegasus_spec> &bundles, size_t width, size_t &min_length, size_t &max_length)
inline void get_length_range(const bundle_cache<chimera_spec>&, size_t width, size_t &min_length, size_t &max_length)

Private Members

const size_t length_bound
vector<size_t> clique_yield
vector<vector<vector<size_t>>> best_embeddings
class maxcache
#include <clique_cache.hpp>

Public Functions

inline maxcache(size_t r, size_t c, size_t *m)
inline void setmax(size_t y, size_t x, size_t s, corner c)
inline size_t score(size_t y, size_t x) const
inline corner corners(size_t y, size_t x) const

Public Members

const size_t rows
const size_t cols

Private Members

size_t *mem
class zerocache
#include <clique_cache.hpp>

Public Functions

inline constexpr size_t score(size_t, size_t) const