67 addAll(head.d_descriptors);
68 addAll(tail.d_descriptors);
89 addAndPair(descriptor);
102 template <
typename T>
104 for (
const auto &descriptor : descriptors) {
120 if (d_descriptors.size() != that.d_descriptors.size()) {
121 throw std::runtime_error(
"Descriptor lists should be the same length!");
125 for (
auto i = 1u; i < d_descriptors.size(); ++i) {
126 if (thisRef == d_descriptors[i] && thatRef != that.d_descriptors[i]) {
129 if (thisRef != d_descriptors[i] && thatRef == that.d_descriptors[i]) {
144 std::stringstream ss;
145 auto basis = d_descriptors[0];
151 for (
auto it = d_descriptors.begin() + 1; it != d_descriptors.end(); ++it) {
152 ss << (basis ==
ref(*it) ?
"l" :
"u");
159 std::vector<Descriptor> d_descriptors;
172 if (!d_descriptors.empty() && d_descriptors[0] == descriptor) {
177 d_descriptors.push_back(
ref(descriptor));
bool operator<(const PairList &that) const
std::string toString() const
static constexpr int numPairingBits
static Descriptor ref(Descriptor descriptor)
int compareTo(const PairList &that) const
bool add(Descriptor descriptor)
PairList(const PairList &head, const PairList &tail)
void addAll(const T &descriptors)
pairing_t getPairing() const
Descriptor getRefDescriptor() const
static std::string to_string(const Descriptor &desc)