16 #ifndef GRAPHSCOPE_PTHASH_UTILS_ENCODERS_VIEW_VIEW_H_
17 #define GRAPHSCOPE_PTHASH_UTILS_ENCODERS_VIEW_VIEW_H_
26 struct dictionary_view {
27 size_t size()
const {
return m_ranks.size(); }
28 uint64_t access(uint64_t i)
const {
29 uint64_t rank = m_ranks.access(i);
30 return m_dict.access(rank);
33 template <
typename Visitor>
34 void visit(Visitor& visitor) {
35 visitor.visit(m_ranks);
36 visitor.visit(m_dict);
39 compact_vector_view m_ranks;
40 compact_vector_view m_dict;
43 struct dual_dictionary_view {
44 uint64_t access(uint64_t i)
const {
45 if (i < m_front.size()) {
46 return m_front.access(i);
48 return m_back.access(i - m_front.size());
51 template <
typename Visitor>
52 void visit(Visitor& visitor) {
53 visitor.visit(m_front);
54 visitor.visit(m_back);
57 dictionary_view m_front;
58 dictionary_view m_back;
65 #endif // GRAPHSCOPE_PTHASH_UTILS_ENCODERS_VIEW_VIEW_H_