18#include "../Descriptor.h"
64 addAll(head.d_descriptors);
65 addAll(tail.d_descriptors);
86 addAndPair(descriptor);
101 for (
const auto &descriptor : descriptors) {
117 if (d_descriptors.size() != that.d_descriptors.size()) {
118 throw std::runtime_error(
"Descriptor lists should be the same length!");
122 for (
auto i = 1u; i < d_descriptors.size(); ++i) {
123 if (thisRef == d_descriptors[i] && thatRef != that.d_descriptors[i]) {
126 if (thisRef != d_descriptors[i] && thatRef == that.d_descriptors[i]) {
141 std::stringstream ss;
142 auto basis = d_descriptors[0];
148 for (
auto it = d_descriptors.begin() + 1; it != d_descriptors.end(); ++it) {
149 ss << (basis ==
ref(*it) ?
"l" :
"u");
156 std::vector<Descriptor> d_descriptors;
158 std::uint32_t d_pairing = 0;
169 if (!d_descriptors.empty() && d_descriptors[0] == descriptor) {
171 d_pairing |= 0x1 << (31 - d_descriptors.size());
173 d_descriptors.push_back(
ref(descriptor));
bool operator<(const PairList &that) const
std::string toString() const
static Descriptor ref(Descriptor descriptor)
std::uint32_t getPairing() const
int compareTo(const PairList &that) const
bool add(Descriptor descriptor)
PairList(const PairList &head, const PairList &tail)
void addAll(const T &descriptors)
Descriptor getRefDescriptor() const
static std::string to_string(const Descriptor &desc)