18 #include "../Descriptor.h"
21 namespace CIPLabeler {
64 addAll(head.d_descriptors);
65 addAll(tail.d_descriptors);
86 addAndPair(descriptor);
99 template <
typename T>
void addAll(
const T &descriptors) {
100 for (
const auto &descriptor : descriptors) {
116 if (d_descriptors.size() != that.d_descriptors.size()) {
117 throw std::runtime_error(
"Descriptor lists should be the same length!");
121 for (
auto i = 1u; i < d_descriptors.size(); ++i) {
122 if (thisRef == d_descriptors[i] && thatRef != that.d_descriptors[i]) {
125 if (thisRef != d_descriptors[i] && thatRef == that.d_descriptors[i]) {
140 std::stringstream ss;
141 auto basis = d_descriptors[0];
147 for (
auto it = d_descriptors.begin() + 1; it != d_descriptors.end(); ++it) {
148 ss << (basis ==
ref(*it) ?
"l" :
"u");
155 std::vector<Descriptor> d_descriptors;
157 std::uint32_t d_pairing = 0;
168 if (!d_descriptors.empty() && d_descriptors[0] == descriptor) {
170 d_pairing |= 0x1 << (31 - d_descriptors.size());
172 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)