bool operator<(const Arc &arc1, const Arc &arc2) { if (arc1.first() != arc2.first()) { return arc1.first() < arc2.first(); } if (IS_EMPTY(arc1.second())) { if (IS_EMPTY(arc2.second())) { return LESS_EMPTY_EMPTY(arc1.second(), arc2.second()); } else { return LESS_EMPTY_SOLID(arc1.second(), arc2.second()); } } else { if (IS_EMPTY(arc2.second())) { return LESS_SOLID_EMPTY(arc1.second(), arc2.second()); } else { return LESS_SOLID_SOLID(arc1.second(), arc2.second()); } } }
bool compareArc(const Arc &arc1, const Arc &arc2) { if (DECODE_EMPTY_POS(arc1.second()) != DECODE_EMPTY_POS(arc2.second())) { return DECODE_EMPTY_POS(arc1.second()) < DECODE_EMPTY_POS(arc2.second()); } if (ARC_LEFT(arc1.first(), arc1.second())) { if (ARC_RIGHT(arc2.first(), arc2.second())) { return false; } else { return arc1.first() > arc2.first(); } } else { if (ARC_LEFT(arc2.first(), arc2.second())) { return true; } else { return arc1.first() > arc2.first(); } } }
Size HashFunc<Arc>::operator()(const Arc &key) const { pair.first = key.first(); pair.second = key.second(); return HashFuncSmallKeyPair<NodeId, NodeId>::operator()(pair); }
bool operator<(const Arc &arc1, const Arc &arc2) { if (arc1.first() != arc2.first()) { return arc1.first() < arc2.first(); } return arc1.second() < arc2.second(); }