1.1 --- a/lemon/Makefile.am Mon Nov 21 18:03:20 2005 +0000
1.2 +++ b/lemon/Makefile.am Mon Nov 21 18:12:11 2005 +0000
1.3 @@ -50,6 +50,7 @@
1.4 lp_skeleton.h \
1.5 maps.h \
1.6 matrix_maps.h \
1.7 + map_iterator.h \
1.8 max_matching.h \
1.9 min_cost_flow.h \
1.10 suurballe.h \
1.11 @@ -71,7 +72,6 @@
1.12 bits/alteration_notifier.h \
1.13 bits/array_map.h \
1.14 bits/default_map.h \
1.15 - bits/extended_pair.h \
1.16 bits/vector_map.h \
1.17 bits/iterable_graph_extender.h \
1.18 bits/extendable_graph_extender.h \
2.1 --- a/lemon/bits/extended_pair.h Mon Nov 21 18:03:20 2005 +0000
2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2.3 @@ -1,146 +0,0 @@
2.4 -/* -*- C++ -*-
2.5 - * lemon/bits/extended_pair.h - Part of LEMON, a generic C++ optimization library
2.6 - *
2.7 - * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
2.8 - * (Egervary Research Group on Combinatorial Optimization, EGRES).
2.9 - *
2.10 - * Permission to use, modify and distribute this software is granted
2.11 - * provided that this copyright notice appears in all copies. For
2.12 - * precise terms see the accompanying LICENSE file.
2.13 - *
2.14 - * This software is provided "AS IS" with no warranty of any kind,
2.15 - * express or implied, and with no claim as to its suitability for any
2.16 - * purpose.
2.17 - *
2.18 - */
2.19 -
2.20 -#ifndef LEMON_EXTENDED_PAIR_H
2.21 -#define LEMON_EXTENDED_PAIR_H
2.22 -
2.23 -///\ingroup misc
2.24 -///\file
2.25 -///\brief A more customizable pair type than std::pair.
2.26 -
2.27 -namespace lemon {
2.28 -
2.29 - /// \brief A more customizable pair type than std::pair.
2.30 - ///
2.31 - /// This type is a customizable pair type. The main goal
2.32 - /// is that the constructor's parameter type does not depend
2.33 - /// on the stored data type. This way it is possible to store
2.34 - /// references in the extended_pair.
2.35 - /// \code
2.36 - /// int a; char b;
2.37 - /// typedef extended_pair<int&, int&, char&, char&> ICPair;
2.38 - /// ICPair p(a, b);
2.39 - /// // like a real reference to an std::pair<int, char>
2.40 - /// // but the pair does not exist
2.41 - /// p.first = 42;
2.42 - /// p.second = '@';
2.43 - /// \endcode
2.44 - /// \param T1 The type of first.
2.45 - /// \param A1 The parameter type for first.
2.46 - /// \param T2 The type of second.
2.47 - /// \param A2 The parameter type for second.
2.48 - template <typename T1, typename A1, typename T2, typename A2>
2.49 - struct extended_pair {
2.50 - /// \brief The type of first.
2.51 - ///
2.52 - /// The type of first.
2.53 - typedef T1 first_type;
2.54 - /// \brief The type of second.
2.55 - ///
2.56 - /// The type of second.
2.57 - typedef T2 second_type;
2.58 -
2.59 - /// \brief Default constructor.
2.60 - ///
2.61 - /// Default constructor. It calls the default constructor of
2.62 - /// first and second.
2.63 - extended_pair() : first(), second() {}
2.64 -
2.65 - /// \brief Constructor.
2.66 - ///
2.67 - /// Constructor.
2.68 - extended_pair(A1 f, A2 s) : first(f), second(s) {}
2.69 -
2.70 - /// \brief Template constructor.
2.71 - ///
2.72 - /// Template constructor. It copies everything which has
2.73 - /// \c first and \c second member.
2.74 - template <class Pair>
2.75 - extended_pair(const Pair& pair) : first(pair.first), second(pair.second) {}
2.76 -
2.77 - /// \brief The first value
2.78 - ///
2.79 - /// The first value
2.80 - T1 first;
2.81 - /// \brief The second value
2.82 - ///
2.83 - /// The second value
2.84 - T2 second;
2.85 - };
2.86 -
2.87 - /// \brief Equality operator
2.88 - ///
2.89 - /// Equality operator
2.90 - template <typename T1, typename T2,
2.91 - typename LA1, typename LA2, typename RA1, typename RA2>
2.92 - bool operator==(const extended_pair<T1, LA1, T2, LA2>& left,
2.93 - const extended_pair<T1, RA1, T2, RA2>& right) {
2.94 - return left.first == right.first && left.second == right.second;
2.95 - }
2.96 -
2.97 - /// \brief Inequality operator.
2.98 - ///
2.99 - /// Inequality operator.
2.100 - template <typename T1, typename T2,
2.101 - typename LA1, typename LA2, typename RA1, typename RA2>
2.102 - bool operator!=(const extended_pair<T1, LA1, T2, LA2>& left,
2.103 - const extended_pair<T1, RA1, T2, RA2>& right) {
2.104 - return !(left == right);
2.105 - }
2.106 -
2.107 - /// \brief Less operator.
2.108 - ///
2.109 - /// Less operator.
2.110 - template <typename T1, typename T2,
2.111 - typename LA1, typename LA2, typename RA1, typename RA2>
2.112 - bool operator<(const extended_pair<T1, LA1, T2, LA2>& left,
2.113 - const extended_pair<T1, RA1, T2, RA2>& right) {
2.114 - return left.first < right.first ||
2.115 - (!(right.first<left.first) && left.second < right.second);
2.116 - }
2.117 -
2.118 - /// \brief Greater operator.
2.119 - ///
2.120 - /// Greater operator.
2.121 - template <typename T1, typename T2,
2.122 - typename LA1, typename LA2, typename RA1, typename RA2>
2.123 - bool operator>(const extended_pair<T1, LA1, T2, LA2>& left,
2.124 - const extended_pair<T1, RA1, T2, RA2>& right) {
2.125 - return right < left;
2.126 - }
2.127 -
2.128 - /// \brief Less or equal operator.
2.129 - ///
2.130 - /// Less or equal operator.
2.131 - template <typename T1, typename T2,
2.132 - typename LA1, typename LA2, typename RA1, typename RA2>
2.133 - bool operator<=(const extended_pair<T1, LA1, T2, LA2>& left,
2.134 - const extended_pair<T1, RA1, T2, RA2>& right) {
2.135 - return !(right > left);
2.136 - }
2.137 -
2.138 - /// \brief Greater or equal operator.
2.139 - ///
2.140 - /// Greater or equal operator.
2.141 - template <typename T1, typename T2,
2.142 - typename LA1, typename LA2, typename RA1, typename RA2>
2.143 - bool operator>=(const extended_pair<T1, LA1, T2, LA2>& left,
2.144 - const extended_pair<T1, RA1, T2, RA2>& right) {
2.145 - return !(right < left);
2.146 - }
2.147 -
2.148 -}
2.149 -#endif