mirror of
https://github.com/allemangD/toddcox-visualize.git
synced 2025-11-10 12:02:47 -05:00
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
#include <tc/core.hpp>
|
|
|
|
namespace tc {
|
|
Cosets<>::Cosets(size_t rank)
|
|
: _rank(rank), _order(0), _complete(false), _data() {}
|
|
|
|
void Cosets<>::set(size_t coset, size_t gen, size_t target) {
|
|
set(coset * rank() + gen, target);
|
|
}
|
|
|
|
[[nodiscard]] size_t Cosets<>::get(size_t coset, size_t gen) const {
|
|
return get(coset * rank() + gen);
|
|
}
|
|
|
|
[[nodiscard]] bool Cosets<>::isset(size_t coset, size_t gen) const {
|
|
return isset(coset * rank() + gen);
|
|
}
|
|
|
|
[[nodiscard]] size_t Cosets<>::rank() const {
|
|
return _rank;
|
|
}
|
|
|
|
[[nodiscard]] size_t Cosets<>::order() const {
|
|
return _order;
|
|
}
|
|
|
|
[[nodiscard]] bool Cosets<>::complete() const {
|
|
return _complete;
|
|
}
|
|
|
|
[[nodiscard]] size_t Cosets<>::size() const {
|
|
return _data.size();
|
|
}
|
|
|
|
void Cosets<>::add_row() {
|
|
_data.resize(_data.size() + rank(), UNSET);
|
|
_order++;
|
|
}
|
|
|
|
void Cosets<>::set(size_t idx, size_t target) {
|
|
size_t coset = idx / rank();
|
|
size_t gen = idx % rank();
|
|
_data[idx] = target;
|
|
_data[target * rank() + gen] = coset;
|
|
}
|
|
|
|
[[nodiscard]] size_t Cosets<>::get(size_t idx) const {
|
|
return _data[idx];
|
|
}
|
|
|
|
[[nodiscard]] bool Cosets<>::isset(size_t idx) const {
|
|
return get(idx) != UNSET;
|
|
}
|
|
|
|
} |