Skip to content

Commit

Permalink
bump sshash and const visitors
Browse files Browse the repository at this point in the history
  • Loading branch information
jermp committed Jul 12, 2024
1 parent d0eb9cd commit 5424493
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 39 deletions.
20 changes: 15 additions & 5 deletions include/color_sets/differential.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -354,14 +354,24 @@ struct differential {

template <typename Visitor>
void visit(Visitor& visitor) {
visitor.visit(m_num_docs);
visitor.visit(m_representative_offsets);
visitor.visit(m_list_offsets);
visitor.visit(m_colors);
visitor.visit(m_clusters);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
visit_impl(visitor, *this);
}

private:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_num_docs);
visitor.visit(t.m_representative_offsets);
visitor.visit(t.m_list_offsets);
visitor.visit(t.m_colors);
visitor.visit(t.m_clusters);
}

uint32_t m_num_docs;

sshash::ef_sequence<false> m_representative_offsets, m_list_offsets;
Expand Down
20 changes: 15 additions & 5 deletions include/color_sets/hybrid.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,14 +382,24 @@ struct hybrid {

template <typename Visitor>
void visit(Visitor& visitor) {
visitor.visit(m_num_docs);
visitor.visit(m_sparse_set_threshold_size);
visitor.visit(m_very_dense_set_threshold_size);
visitor.visit(m_offsets);
visitor.visit(m_colors);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
visit_impl(visitor, *this);
}

private:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_num_docs);
visitor.visit(t.m_sparse_set_threshold_size);
visitor.visit(t.m_very_dense_set_threshold_size);
visitor.visit(t.m_offsets);
visitor.visit(t.m_colors);
}

uint32_t m_num_docs;
uint32_t m_sparse_set_threshold_size;
uint32_t m_very_dense_set_threshold_size;
Expand Down
20 changes: 15 additions & 5 deletions include/color_sets/meta.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -309,14 +309,24 @@ struct meta {

template <typename Visitor>
void visit(Visitor& visitor) {
visitor.visit(m_num_docs);
visitor.visit(m_meta_colors);
visitor.visit(m_meta_colors_offsets);
visitor.visit(m_colors);
visitor.visit(m_partition_endpoints);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
visit_impl(visitor, *this);
}

private:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_num_docs);
visitor.visit(t.m_meta_colors);
visitor.visit(t.m_meta_colors_offsets);
visitor.visit(t.m_colors);
visitor.visit(t.m_partition_endpoints);
}

uint32_t m_num_docs;
pthash::compact_vector m_meta_colors;
sshash::ef_sequence<false> m_meta_colors_offsets;
Expand Down
28 changes: 19 additions & 9 deletions include/color_sets/meta_differential.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,18 +316,28 @@ struct meta_differential {

template <typename Visitor>
void visit(Visitor& visitor) {
visitor.visit(m_num_docs);
visitor.visit(m_num_partition_sets);
visitor.visit(m_partition_sets_offsets);
visitor.visit(m_relative_colors_offsets);
visitor.visit(m_partition_endpoints);
visitor.visit(m_partial_colors);
visitor.visit(m_relative_colors);
visitor.visit(m_partition_sets);
visitor.visit(m_partition_sets_partitions);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
visit_impl(visitor, *this);
}

private:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_num_docs);
visitor.visit(t.m_num_partition_sets);
visitor.visit(t.m_partition_sets_offsets);
visitor.visit(t.m_relative_colors_offsets);
visitor.visit(t.m_partition_endpoints);
visitor.visit(t.m_partial_colors);
visitor.visit(t.m_relative_colors);
visitor.visit(t.m_partition_sets);
visitor.visit(t.m_partition_sets_partitions);
}

uint32_t m_num_docs;
uint32_t m_num_partition_sets;
sshash::ef_sequence<false> m_partition_sets_offsets, m_relative_colors_offsets;
Expand Down
21 changes: 12 additions & 9 deletions include/filenames.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,6 @@ struct filenames {
return {m_chars.data() + begin, end - begin};
}

// void print() const {
// for (uint64_t i = 0; i != num_docs(); ++i) {
// auto const& s = filename(i);
// std::cout << s << std::endl;
// }
// }

uint32_t num_docs() const {
assert(m_offsets.size() > 0);
return m_offsets.size() - 1;
Expand All @@ -37,11 +30,21 @@ struct filenames {

template <typename Visitor>
void visit(Visitor& visitor) {
visitor.visit(m_offsets);
visitor.visit(m_chars);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
visit_impl(visitor, *this);
}

private:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_offsets);
visitor.visit(t.m_chars);
}

std::vector<uint32_t> m_offsets;
std::vector<char> m_chars;
};
Expand Down
18 changes: 14 additions & 4 deletions include/index.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,12 @@ struct index {

template <typename Visitor>
void visit(Visitor& visitor) {
visitor.visit(m_k2u);
visitor.visit(m_u2c);
visitor.visit(m_color_sets);
visitor.visit(m_filenames);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
visit_impl(visitor, *this);
}

uint64_t num_bits() const {
Expand All @@ -64,6 +66,14 @@ struct index {
}

private:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_k2u);
visitor.visit(t.m_u2c);
visitor.visit(t.m_color_sets);
visitor.visit(t.m_filenames);
}

sshash::dictionary m_k2u; // map: kmer to unitig-id
ranked_bit_vector m_u2c; // map: unitig-id to color-class-id
ColorSets m_color_sets;
Expand Down
13 changes: 12 additions & 1 deletion include/ranked_bit_vector.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,21 @@ struct ranked_bit_vector : public pthash::bit_vector {
template <typename Visitor>
void visit(Visitor& visitor) {
pthash::bit_vector::visit(visitor);
visitor.visit(m_block_rank_pairs);
visit_impl(visitor, *this);
}

template <typename Visitor>
void visit(Visitor& visitor) const {
pthash::bit_vector::visit(visitor);
visit_impl(visitor, *this);
}

protected:
template <typename Visitor, typename T>
static void visit_impl(Visitor& visitor, T&& t) {
visitor.visit(t.m_block_rank_pairs);
}

inline uint64_t block_rank(uint64_t block) const { return m_block_rank_pairs[block * 2]; }

inline uint64_t sub_block_rank(uint64_t sub_block) const {
Expand Down

0 comments on commit 5424493

Please sign in to comment.