Correcting the structure of the graph's and adaptor's map.
The template assign operators and map iterators can be used for adaptors also.
Some bugfix in the adaptors
New class SwapBpUGraphAdaptor which swaps the two nodeset of the graph.
3 * This file is a part of LEMON, a generic C++ optimization library
5 * Copyright (C) 2003-2006
6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
9 * Permission to use, modify and distribute this software is granted
10 * provided that this copyright notice appears in all copies. For
11 * precise terms see the accompanying LICENSE file.
13 * This software is provided "AS IS" with no warranty of any kind,
14 * express or implied, and with no claim as to its suitability for any
19 #ifndef LEMON_COUNTER_H
20 #define LEMON_COUNTER_H
27 ///\brief Tools for counting steps and events
32 template<class P> class _SubNoCounter;
43 typedef _SubCounter<_SubCounter<P> > SubCounter;
44 typedef _SubNoCounter<_SubCounter<P> > SubNoCounter;
46 _SubCounter(P &parent)
47 : _parent(parent), _title(), _os(std::cerr), count(0) {}
48 _SubCounter(P &parent,std::string title,std::ostream &os=std::cerr)
49 : _parent(parent), _title(title), _os(os), count(0) {}
50 _SubCounter(P &parent,const char *title,std::ostream &os=std::cerr)
51 : _parent(parent), _title(title), _os(os), count(0) {}
53 _os << _title << count <<std::endl;
56 _SubCounter &operator++() { count++; return *this;}
57 int operator++(int) { return count++; }
58 _SubCounter &operator--() { count--; return *this;}
59 int operator--(int) { return count--; }
60 _SubCounter &operator+=(int c) { count+=c; return *this;}
61 _SubCounter &operator-=(int c) { count-=c; return *this;}
62 void reset(int c=0) {count=c;}
63 operator int() {return count;}
71 typedef _SubNoCounter<_SubNoCounter<P> > SubCounter;
72 typedef _SubNoCounter<_SubNoCounter<P> > SubNoCounter;
74 _SubNoCounter(P &parent) :_parent(parent) {}
75 _SubNoCounter(P &parent,std::string,std::ostream &)
77 _SubNoCounter(P &parent,std::string)
79 _SubNoCounter(P &parent,const char *,std::ostream &)
81 _SubNoCounter(P &parent,const char *)
84 _SubNoCounter &operator++() { ++_parent; return *this;}
85 int operator++(int) { _parent++; return 0;}
86 _SubNoCounter &operator--() { --_parent; return *this;}
87 int operator--(int) { _parent--; return 0;}
88 _SubNoCounter &operator+=(int c) { _parent+=c; return *this;}
89 _SubNoCounter &operator-=(int c) { _parent-=c; return *this;}
92 operator int() {return 0;}
96 /// \addtogroup timecount
101 ///This class makes it easier to count certain events. You can increment
102 ///or decrement the counter using operator++ and operator--.
103 ///A report is automatically printed on destruction.
113 ///\todo document please.
115 typedef _SubCounter<Counter> SubCounter;
118 ///\todo document please.
120 typedef _SubNoCounter<Counter> SubNoCounter;
123 Counter() : _title(), _os(std::cerr), count(0) {}
125 Counter(std::string title,std::ostream &os=std::cerr)
126 : _title(title), _os(os), count(0) {}
128 Counter(const char *title,std::ostream &os=std::cerr)
129 : _title(title), _os(os), count(0) {}
130 ///Destructor. Prints the given title and the value of the counter.
132 _os << _title << count <<std::endl;
135 Counter &operator++() { count++; return *this;}
137 int operator++(int) { return count++;}
139 Counter &operator--() { count--; return *this;}
141 int operator--(int) { return count--;}
143 Counter &operator+=(int c) { count+=c; return *this;}
145 Counter &operator-=(int c) { count-=c; return *this;}
147 void reset(int c=0) {count=c;}
149 operator int() {return count;}
152 ///'Do nothing' version of \ref Counter
154 ///'Do nothing' version of \ref Counter.
159 typedef _SubNoCounter<NoCounter> SubCounter;
160 typedef _SubNoCounter<NoCounter> SubNoCounter;
163 NoCounter(std::string,std::ostream &) {}
164 NoCounter(const char *,std::ostream &) {}
165 NoCounter(std::string) {}
166 NoCounter(const char *) {}
167 NoCounter &operator++() { return *this; }
168 int operator++(int) { return 0; }
169 NoCounter &operator--() { return *this; }
170 int operator--(int) { return 0; }
171 NoCounter &operator+=(int) { return *this;}
172 NoCounter &operator-=(int) { return *this;}
175 operator int() {return 0;}