COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/deba/extended_pair.h @ 921:818510fa3d99

Last change on this file since 921:818510fa3d99 was 703:32f280a5ed7d, checked in by Balazs Dezso, 17 years ago
File size: 1.9 KB
Line 
1// -*- c++ -*-
2#ifndef EXTENDED_PAIR_H
3#define EXTENDED_PAIR_H
4
5template <typename T1, typename A1, typename T2, typename A2>
6struct extended_pair {
7  typedef T1 first_type;
8  typedef T2 second_type;
9
10  extended_pair() : first(), second() {}
11
12  extended_pair(A1 f, A2 s) : first(f), second(s) {}
13
14  template <class Pair>
15  extended_pair(const Pair& pair) : first(pair.first), second(pair.second) {}
16
17  T1 first;
18  T2 second;
19};
20
21template <typename T1, typename T2,
22          typename LA1, typename LA2, typename RA1, typename RA2>
23bool operator==(const extended_pair<T1, LA1, T2, LA2>& left,
24                const extended_pair<T1, RA1, T2, RA2>& right) {
25  return left.first == right.first && left.second == right.second;
26}
27
28template <typename T1, typename T2,
29          typename LA1, typename LA2, typename RA1, typename RA2>
30bool operator!=(const extended_pair<T1, LA1, T2, LA2>& left,
31                const extended_pair<T1, RA1, T2, RA2>& right) {
32  return  !(left == right);
33}
34
35template <typename T1, typename T2,
36          typename LA1, typename LA2, typename RA1, typename RA2>
37bool operator<(const extended_pair<T1, LA1, T2, LA2>& left,
38                const extended_pair<T1, RA1, T2, RA2>& right) {
39  if (left.first == right.first) return left.second == right.second;
40  return left.first < right.first;
41}
42
43template <typename T1, typename T2,
44          typename LA1, typename LA2, typename RA1, typename RA2>
45bool operator>(const extended_pair<T1, LA1, T2, LA2>& left,
46                const extended_pair<T1, RA1, T2, RA2>& right) {
47  return right < left;
48}
49
50template <typename T1, typename T2,
51          typename LA1, typename LA2, typename RA1, typename RA2>
52bool operator<=(const extended_pair<T1, LA1, T2, LA2>& left,
53                const extended_pair<T1, RA1, T2, RA2>& right) {
54  return !(right > left);
55}
56
57template <typename T1, typename T2,
58          typename LA1, typename LA2, typename RA1, typename RA2>
59bool operator>=(const extended_pair<T1, LA1, T2, LA2>& left,
60                const extended_pair<T1, RA1, T2, RA2>& right) {
61  return !(right < left);
62}
63
64
65#endif
Note: See TracBrowser for help on using the repository browser.