Changes in / [1103:98ddf8d5fda9:1053:64260c0f58eb] in lemon
- Files:
-
- 1 added
- 5 deleted
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
AUTHORS
r1072 r320 24 24 25 25 Again, please visit the history of the old LEMON repository for more 26 details: http://lemon.cs.elte.hu/ hg/lemon-0.x26 details: http://lemon.cs.elte.hu/svn/lemon/trunk -
cmake/FindCOIN.cmake
r1063 r681 6 6 FIND_LIBRARY(COIN_CBC_LIBRARY 7 7 NAMES Cbc libCbc 8 HINTS ${COIN_ROOT_DIR}/lib/coin9 8 HINTS ${COIN_ROOT_DIR}/lib 10 9 ) 11 10 FIND_LIBRARY(COIN_CBC_SOLVER_LIBRARY 12 11 NAMES CbcSolver libCbcSolver 13 HINTS ${COIN_ROOT_DIR}/lib/coin14 12 HINTS ${COIN_ROOT_DIR}/lib 15 13 ) 16 14 FIND_LIBRARY(COIN_CGL_LIBRARY 17 15 NAMES Cgl libCgl 18 HINTS ${COIN_ROOT_DIR}/lib/coin19 16 HINTS ${COIN_ROOT_DIR}/lib 20 17 ) 21 18 FIND_LIBRARY(COIN_CLP_LIBRARY 22 19 NAMES Clp libClp 23 HINTS ${COIN_ROOT_DIR}/lib/coin24 20 HINTS ${COIN_ROOT_DIR}/lib 25 21 ) 26 22 FIND_LIBRARY(COIN_COIN_UTILS_LIBRARY 27 23 NAMES CoinUtils libCoinUtils 28 HINTS ${COIN_ROOT_DIR}/lib/coin29 24 HINTS ${COIN_ROOT_DIR}/lib 30 25 ) 31 26 FIND_LIBRARY(COIN_OSI_LIBRARY 32 27 NAMES Osi libOsi 33 HINTS ${COIN_ROOT_DIR}/lib/coin34 28 HINTS ${COIN_ROOT_DIR}/lib 35 29 ) 36 30 FIND_LIBRARY(COIN_OSI_CBC_LIBRARY 37 31 NAMES OsiCbc libOsiCbc 38 HINTS ${COIN_ROOT_DIR}/lib/coin39 32 HINTS ${COIN_ROOT_DIR}/lib 40 33 ) 41 34 FIND_LIBRARY(COIN_OSI_CLP_LIBRARY 42 35 NAMES OsiClp libOsiClp 43 HINTS ${COIN_ROOT_DIR}/lib/coin44 36 HINTS ${COIN_ROOT_DIR}/lib 45 37 ) 46 38 FIND_LIBRARY(COIN_OSI_VOL_LIBRARY 47 39 NAMES OsiVol libOsiVol 48 HINTS ${COIN_ROOT_DIR}/lib/coin49 40 HINTS ${COIN_ROOT_DIR}/lib 50 41 ) 51 42 FIND_LIBRARY(COIN_VOL_LIBRARY 52 43 NAMES Vol libVol 53 HINTS ${COIN_ROOT_DIR}/lib/coin54 44 HINTS ${COIN_ROOT_DIR}/lib 55 45 ) … … 66 56 COIN_OSI_CBC_LIBRARY 67 57 COIN_OSI_CLP_LIBRARY 68 #COIN_OSI_VOL_LIBRARY69 #COIN_VOL_LIBRARY58 COIN_OSI_VOL_LIBRARY 59 COIN_VOL_LIBRARY 70 60 ) 71 61 72 62 IF(COIN_FOUND) 73 63 SET(COIN_INCLUDE_DIRS ${COIN_INCLUDE_DIR}) 74 SET(COIN_LIBRARIES "${COIN_CBC_LIBRARY};${COIN_CBC_SOLVER_LIBRARY};${COIN_CGL_LIBRARY};${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY};${COIN_OSI_LIBRARY};${COIN_OSI_CBC_LIBRARY};${COIN_OSI_CLP_LIBRARY} ")64 SET(COIN_LIBRARIES "${COIN_CBC_LIBRARY};${COIN_CBC_SOLVER_LIBRARY};${COIN_CGL_LIBRARY};${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY};${COIN_OSI_LIBRARY};${COIN_OSI_CBC_LIBRARY};${COIN_OSI_CLP_LIBRARY};${COIN_OSI_VOL_LIBRARY};${COIN_VOL_LIBRARY}") 75 65 SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY}") 76 66 SET(COIN_CBC_LIBRARIES ${COIN_LIBRARIES}) -
configure.ac
r1037 r727 99 99 dnl Add dependencies on files generated by configure. 100 100 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], 101 ['$(top_srcdir)/doc/Doxyfile.in $(top_srcdir)/ doc/mainpage.dox.in $(top_srcdir)/lemon/lemon.pc.in $(top_srcdir)/cmake/version.cmake.in'])101 ['$(top_srcdir)/doc/Doxyfile.in $(top_srcdir)/lemon/lemon.pc.in $(top_srcdir)/cmake/version.cmake.in']) 102 102 103 103 AC_CONFIG_FILES([ … … 106 106 cmake/version.cmake 107 107 doc/Doxyfile 108 doc/mainpage.dox109 108 lemon/lemon.pc 110 109 ]) -
doc/CMakeLists.txt
r1037 r1033 9 9 ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in 10 10 ${PROJECT_BINARY_DIR}/doc/Doxyfile 11 @ONLY12 )13 14 CONFIGURE_FILE(15 ${PROJECT_SOURCE_DIR}/doc/mainpage.dox.in16 ${PROJECT_BINARY_DIR}/doc/mainpage.dox17 11 @ONLY 18 12 ) -
doc/Doxyfile.in
r1037 r1033 1 # Doxyfile 1. 7.31 # Doxyfile 1.5.9 2 2 3 3 #--------------------------------------------------------------------------- … … 5 5 #--------------------------------------------------------------------------- 6 6 DOXYFILE_ENCODING = UTF-8 7 PROJECT_NAME = 8 PROJECT_NUMBER = 9 PROJECT_BRIEF = 10 PROJECT_LOGO = 7 PROJECT_NAME = @PACKAGE_NAME@ 8 PROJECT_NUMBER = @PACKAGE_VERSION@ 11 9 OUTPUT_DIRECTORY = 12 10 CREATE_SUBDIRS = NO … … 32 30 OPTIMIZE_FOR_FORTRAN = NO 33 31 OPTIMIZE_OUTPUT_VHDL = NO 34 EXTENSION_MAPPING =35 32 BUILTIN_STL_SUPPORT = YES 36 33 CPP_CLI_SUPPORT = NO … … 58 55 HIDE_SCOPE_NAMES = YES 59 56 SHOW_INCLUDE_FILES = YES 60 FORCE_LOCAL_INCLUDES = NO61 57 INLINE_INFO = YES 62 58 SORT_MEMBER_DOCS = NO 63 59 SORT_BRIEF_DOCS = NO 64 SORT_MEMBERS_CTORS_1ST = NO65 60 SORT_GROUP_NAMES = NO 66 61 SORT_BY_SCOPE_NAME = NO 67 STRICT_PROTO_MATCHING = NO68 62 GENERATE_TODOLIST = YES 69 63 GENERATE_TESTLIST = YES … … 97 91 "@abs_top_srcdir@/demo" \ 98 92 "@abs_top_srcdir@/tools" \ 99 "@abs_top_srcdir@/test/test_tools.h" \ 100 "@abs_top_builddir@/doc/mainpage.dox" 93 "@abs_top_srcdir@/test/test_tools.h" 101 94 INPUT_ENCODING = UTF-8 102 95 FILE_PATTERNS = *.h \ … … 118 111 FILTER_PATTERNS = 119 112 FILTER_SOURCE_FILES = NO 120 FILTER_SOURCE_PATTERNS =121 113 #--------------------------------------------------------------------------- 122 114 # configuration options related to source browsing … … 145 137 HTML_FOOTER = 146 138 HTML_STYLESHEET = 147 HTML_COLORSTYLE_HUE = 220148 HTML_COLORSTYLE_SAT = 100149 HTML_COLORSTYLE_GAMMA = 80150 HTML_TIMESTAMP = YES151 139 HTML_ALIGN_MEMBERS = YES 152 HTML_DYNAMIC_SECTIONS = YES140 HTML_DYNAMIC_SECTIONS = NO 153 141 GENERATE_DOCSET = NO 154 142 DOCSET_FEEDNAME = "Doxygen generated docs" 155 143 DOCSET_BUNDLE_ID = org.doxygen.Project 156 DOCSET_PUBLISHER_ID = org.doxygen.Publisher157 DOCSET_PUBLISHER_NAME = Publisher158 144 GENERATE_HTMLHELP = NO 159 145 CHM_FILE = … … 167 153 QHP_NAMESPACE = org.doxygen.Project 168 154 QHP_VIRTUAL_FOLDER = doc 169 QHP_CUST_FILTER_NAME =170 QHP_CUST_FILTER_ATTRS =171 QHP_SECT_FILTER_ATTRS =172 155 QHG_LOCATION = 173 GENERATE_ECLIPSEHELP = NO174 ECLIPSE_DOC_ID = org.doxygen.Project175 156 DISABLE_INDEX = NO 176 157 ENUM_VALUES_PER_LINE = 4 177 158 GENERATE_TREEVIEW = NO 178 USE_INLINE_TREES = NO179 159 TREEVIEW_WIDTH = 250 180 EXT_LINKS_IN_WINDOW = NO181 160 FORMULA_FONTSIZE = 10 182 FORMULA_TRANSPARENT = YES183 USE_MATHJAX = NO184 MATHJAX_RELPATH = http://www.mathjax.org/mathjax185 SEARCHENGINE = YES186 SERVER_BASED_SEARCH = NO187 161 #--------------------------------------------------------------------------- 188 162 # configuration options related to the LaTeX output … … 201 175 LATEX_BATCHMODE = NO 202 176 LATEX_HIDE_INDICES = NO 203 LATEX_SOURCE_CODE = NO204 177 #--------------------------------------------------------------------------- 205 178 # configuration options related to the RTF output … … 250 223 SKIP_FUNCTION_MACROS = YES 251 224 #--------------------------------------------------------------------------- 252 # Configuration::additions related to external references225 # Options related to the search engine 253 226 #--------------------------------------------------------------------------- 254 227 TAGFILES = "@abs_top_builddir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/ " … … 264 237 HIDE_UNDOC_RELATIONS = YES 265 238 HAVE_DOT = YES 266 DOT_NUM_THREADS = 0267 239 DOT_FONTNAME = FreeSans 268 240 DOT_FONTSIZE = 10 … … 282 254 DOT_PATH = 283 255 DOTFILE_DIRS = 284 MSCFILE_DIRS =285 256 DOT_GRAPH_MAX_NODES = 50 286 257 MAX_DOT_GRAPH_DEPTH = 0 … … 289 260 GENERATE_LEGEND = YES 290 261 DOT_CLEANUP = YES 262 #--------------------------------------------------------------------------- 263 # Configuration::additions related to the search engine 264 #--------------------------------------------------------------------------- 265 SEARCHENGINE = NO -
doc/DoxygenLayout.xml
r1036 r316 3 3 <navindex> 4 4 <tab type="mainpage" visible="yes" title=""/> 5 <tab type="modules" visible="yes" title="" intro=""/>5 <tab type="modules" visible="yes" title=""/> 6 6 <tab type="classes" visible="yes" title=""> 7 <tab type="classes" visible="yes" title="" intro=""/>8 <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 9 <tab type="hierarchy" visible="yes" title="" intro=""/>10 <tab type="classmembers" visible="yes" title="" intro=""/>7 <tab type="classes" visible="yes" title=""/> 8 <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 9 <tab type="hierarchy" visible="yes" title=""/> 10 <tab type="classmembers" visible="yes" title=""/> 11 11 </tab> 12 12 <tab type="namespaces" visible="yes" title=""> 13 <tab type="namespaces" visible="yes" title="" intro=""/>14 <tab type="namespacemembers" visible="yes" title="" intro=""/>13 <tab type="namespaces" visible="yes" title=""/> 14 <tab type="namespacemembers" visible="yes" title=""/> 15 15 </tab> 16 16 <tab type="files" visible="yes" title=""> 17 <tab type="files" visible="yes" title="" intro=""/>18 <tab type="globals" visible="yes" title="" intro=""/>17 <tab type="files" visible="yes" title=""/> 18 <tab type="globals" visible="yes" title=""/> 19 19 </tab> 20 <tab type="dirs" visible="yes" title="" intro=""/>21 <tab type="examples" visible="yes" title="" intro=""/>22 <tab type="pages" visible="yes" title="" intro=""/>20 <tab type="dirs" visible="yes" title=""/> 21 <tab type="examples" visible="yes" title=""/> 22 <tab type="pages" visible="yes" title=""/> 23 23 </navindex> 24 24 -
doc/lgf.dox
r1069 r463 64 64 \endcode 65 65 66 The \c \@arcs section is very similar to the \c \@nodes section, it67 again starts with a header line describing the names of the maps, but 68 the \c "label" map is not obligatory here. The following lines69 describe the arcs. The first two tokens of each line are the source70 and the target node of the arc, respectively, then come the map66 The \c \@arcs section is very similar to the \c \@nodes section, 67 it again starts with a header line describing the names of the maps, 68 but the \c "label" map is not obligatory here. The following lines 69 describe the arcs. The first two tokens of each line are 70 the source and the target node of the arc, respectively, then come the map 71 71 values. The source and target tokens must be node labels. 72 72 … … 79 79 \endcode 80 80 81 If there is no map in the \c \@arcs section at all, then it must be82 indicated by a sole '-' sign in the first line.83 84 \code85 @arcs86 -87 1 288 1 389 2 390 \endcode91 92 81 The \c \@edges is just a synonym of \c \@arcs. The \@arcs section can 93 82 also store the edge set of an undirected graph. In such case there is 94 83 a conventional method for store arc maps in the file, if two columns 95 ha vethe same caption with \c '+' and \c '-' prefix, then these columns84 has the same caption with \c '+' and \c '-' prefix, then these columns 96 85 can be regarded as the values of an arc map. 97 86 -
lemon/Makefile.am
r1102 r714 1 1 EXTRA_DIST += \ 2 2 lemon/lemon.pc.in \ 3 lemon/lemon.pc.cmake \4 3 lemon/CMakeLists.txt \ 5 4 lemon/config.h.cmake … … 61 60 lemon/bfs.h \ 62 61 lemon/bin_heap.h \ 63 lemon/bucket_heap.h \64 62 lemon/cbc.h \ 65 63 lemon/circulation.h \ … … 79 77 lemon/error.h \ 80 78 lemon/euler.h \ 81 lemon/fib_heap.h \82 79 lemon/full_graph.h \ 83 80 lemon/glpk.h \ … … 103 100 lemon/path.h \ 104 101 lemon/preflow.h \ 105 lemon/radix_heap.h \106 102 lemon/radix_sort.h \ 107 103 lemon/random.h \ -
lemon/bin_heap.h
r730 r631 34 34 ///\brief A Binary Heap implementation. 35 35 /// 36 ///This class implements the \e binary \e heap data structure. 37 /// 36 ///This class implements the \e binary \e heap data structure. 37 /// 38 38 ///A \e heap is a data structure for storing items with specified values 39 39 ///called \e priorities in such a way that finding the item with minimum 40 ///priority is efficient. \c C MPspecifies the ordering of the priorities.40 ///priority is efficient. \c Comp specifies the ordering of the priorities. 41 41 ///In a heap one can change the priority of an item, add or erase an 42 42 ///item, etc. … … 45 45 ///\tparam IM A read and writable item map with int values, used internally 46 46 ///to handle the cross references. 47 ///\tparam C MPA functor class for the ordering of the priorities.47 ///\tparam Comp A functor class for the ordering of the priorities. 48 48 ///The default is \c std::less<PR>. 49 49 /// 50 50 ///\sa FibHeap 51 51 ///\sa Dijkstra 52 template <typename PR, typename IM, typename C MP= std::less<PR> >52 template <typename PR, typename IM, typename Comp = std::less<PR> > 53 53 class BinHeap { 54 54 … … 63 63 typedef std::pair<Item,Prio> Pair; 64 64 ///\e 65 typedef C MPCompare;65 typedef Comp Compare; 66 66 67 67 /// \brief Type to represent the items states. -
lemon/bits/map_extender.h
r867 r664 50 50 typedef typename Parent::ConstReference ConstReference; 51 51 52 typedef typename Parent::ReferenceMapTag ReferenceMapTag;53 54 52 class MapIt; 55 53 class ConstMapIt; … … 85 83 typedef typename Map::Value Value; 86 84 87 MapIt() : map(NULL){}88 89 MapIt(Invalid i) : Parent(i) , map(NULL) {}90 91 explicit MapIt(Map& _map) : map( &_map) {92 map ->notifier()->first(*this);85 MapIt() {} 86 87 MapIt(Invalid i) : Parent(i) { } 88 89 explicit MapIt(Map& _map) : map(_map) { 90 map.notifier()->first(*this); 93 91 } 94 92 95 93 MapIt(const Map& _map, const Item& item) 96 : Parent(item), map( &_map) {}94 : Parent(item), map(_map) {} 97 95 98 96 MapIt& operator++() { 99 map ->notifier()->next(*this);97 map.notifier()->next(*this); 100 98 return *this; 101 99 } 102 100 103 101 typename MapTraits<Map>::ConstReturnValue operator*() const { 104 return (*map)[*this];102 return map[*this]; 105 103 } 106 104 107 105 typename MapTraits<Map>::ReturnValue operator*() { 108 return (*map)[*this];106 return map[*this]; 109 107 } 110 108 111 109 void set(const Value& value) { 112 map ->set(*this, value);113 } 114 115 protected: 116 Map *map;110 map.set(*this, value); 111 } 112 113 protected: 114 Map& map; 117 115 118 116 }; … … 125 123 typedef typename Map::Value Value; 126 124 127 ConstMapIt() : map(NULL){}128 129 ConstMapIt(Invalid i) : Parent(i) , map(NULL) {}130 131 explicit ConstMapIt(Map& _map) : map( &_map) {132 map ->notifier()->first(*this);125 ConstMapIt() {} 126 127 ConstMapIt(Invalid i) : Parent(i) { } 128 129 explicit ConstMapIt(Map& _map) : map(_map) { 130 map.notifier()->first(*this); 133 131 } 134 132 … … 137 135 138 136 ConstMapIt& operator++() { 139 map ->notifier()->next(*this);137 map.notifier()->next(*this); 140 138 return *this; 141 139 } … … 146 144 147 145 protected: 148 const Map *map;146 const Map& map; 149 147 }; 150 148 … … 153 151 154 152 public: 155 ItemIt() : map(NULL) {} 156 157 158 ItemIt(Invalid i) : Parent(i) , map(NULL) {}159 160 explicit ItemIt(Map& _map) : map( &_map) {161 map ->notifier()->first(*this);153 154 ItemIt() {} 155 156 ItemIt(Invalid i) : Parent(i) { } 157 158 explicit ItemIt(Map& _map) : map(_map) { 159 map.notifier()->first(*this); 162 160 } 163 161 164 162 ItemIt(const Map& _map, const Item& item) 165 : Parent(item), map( &_map) {}163 : Parent(item), map(_map) {} 166 164 167 165 ItemIt& operator++() { 168 map ->notifier()->next(*this);169 return *this; 170 } 171 172 protected: 173 const Map *map;166 map.notifier()->next(*this); 167 return *this; 168 } 169 170 protected: 171 const Map& map; 174 172 175 173 }; … … 194 192 typedef typename Parent::ConstReference ConstReference; 195 193 196 typedef typename Parent::ReferenceMapTag ReferenceMapTag;197 198 194 class MapIt; 199 195 class ConstMapIt; … … 232 228 typedef typename Map::Value Value; 233 229 234 MapIt() : map(NULL){}235 236 MapIt(Invalid i) : Parent(i) , map(NULL){ }237 238 explicit MapIt(Map& _map) : map( &_map) {239 map ->graph.first(*this);230 MapIt() {} 231 232 MapIt(Invalid i) : Parent(i) { } 233 234 explicit MapIt(Map& _map) : map(_map) { 235 map.graph.first(*this); 240 236 } 241 237 242 238 MapIt(const Map& _map, const Item& item) 243 : Parent(item), map( &_map) {}239 : Parent(item), map(_map) {} 244 240 245 241 MapIt& operator++() { 246 map ->graph.next(*this);242 map.graph.next(*this); 247 243 return *this; 248 244 } 249 245 250 246 typename MapTraits<Map>::ConstReturnValue operator*() const { 251 return (*map)[*this];247 return map[*this]; 252 248 } 253 249 254 250 typename MapTraits<Map>::ReturnValue operator*() { 255 return (*map)[*this];251 return map[*this]; 256 252 } 257 253 258 254 void set(const Value& value) { 259 map ->set(*this, value);260 } 261 262 protected: 263 Map *map;255 map.set(*this, value); 256 } 257 258 protected: 259 Map& map; 264 260 265 261 }; … … 272 268 typedef typename Map::Value Value; 273 269 274 ConstMapIt() : map(NULL){}275 276 ConstMapIt(Invalid i) : Parent(i) , map(NULL){ }277 278 explicit ConstMapIt(Map& _map) : map( &_map) {279 map ->graph.first(*this);270 ConstMapIt() {} 271 272 ConstMapIt(Invalid i) : Parent(i) { } 273 274 explicit ConstMapIt(Map& _map) : map(_map) { 275 map.graph.first(*this); 280 276 } 281 277 282 278 ConstMapIt(const Map& _map, const Item& item) 283 : Parent(item), map( &_map) {}279 : Parent(item), map(_map) {} 284 280 285 281 ConstMapIt& operator++() { 286 map ->graph.next(*this);282 map.graph.next(*this); 287 283 return *this; 288 284 } 289 285 290 286 typename MapTraits<Map>::ConstReturnValue operator*() const { 291 return (*map)[*this];292 } 293 294 protected: 295 const Map *map;287 return map[*this]; 288 } 289 290 protected: 291 const Map& map; 296 292 }; 297 293 … … 300 296 301 297 public: 302 ItemIt() : map(NULL) {} 303 304 305 ItemIt(Invalid i) : Parent(i) , map(NULL){ }306 307 explicit ItemIt(Map& _map) : map( &_map) {308 map ->graph.first(*this);298 299 ItemIt() {} 300 301 ItemIt(Invalid i) : Parent(i) { } 302 303 explicit ItemIt(Map& _map) : map(_map) { 304 map.graph.first(*this); 309 305 } 310 306 311 307 ItemIt(const Map& _map, const Item& item) 312 : Parent(item), map( &_map) {}308 : Parent(item), map(_map) {} 313 309 314 310 ItemIt& operator++() { 315 map ->graph.next(*this);316 return *this; 317 } 318 319 protected: 320 const Map *map;311 map.graph.next(*this); 312 return *this; 313 } 314 315 protected: 316 const Map& map; 321 317 322 318 }; -
lemon/bits/path_dump.h
r973 r576 50 50 51 51 bool empty() const { 52 return predMap[target] == INVALID;52 return predMap[target] != INVALID; 53 53 } 54 54 … … 124 124 125 125 bool empty() const { 126 return predMatrixMap(source, target) == INVALID;126 return source != target; 127 127 } 128 128 -
lemon/concepts/maps.h
r765 r576 183 183 template<typename _ReferenceMap> 184 184 struct Constraints { 185 typename enable_if<typename _ReferenceMap::ReferenceMapTag, void>::type 186 constraints() { 185 void constraints() { 187 186 checkConcept<ReadWriteMap<K, T>, _ReferenceMap >(); 188 187 ref = m[key]; -
lemon/core.h
r984 r718 395 395 static void copy(const From& from, Digraph &to, 396 396 NodeRefMap& nodeRefMap, ArcRefMap& arcRefMap) { 397 to.clear();398 397 for (typename From::NodeIt it(from); it != INVALID; ++it) { 399 398 nodeRefMap[it] = to.addNode(); … … 423 422 static void copy(const From& from, Graph &to, 424 423 NodeRefMap& nodeRefMap, EdgeRefMap& edgeRefMap) { 425 to.clear();426 424 for (typename From::NodeIt it(from); it != INVALID; ++it) { 427 425 nodeRefMap[it] = to.addNode(); -
lemon/dfs.h
r1009 r631 558 558 void start(Node t) 559 559 { 560 while ( !emptyQueue() && !(*_reached)[t])560 while ( !emptyQueue() && G->target(_stack[_stack_head])!=t ) 561 561 processNextArc(); 562 562 } … … 1510 1510 /// with addSource() before using this function. 1511 1511 void start(Node t) { 1512 while ( !emptyQueue() && !(*_reached)[t])1512 while ( !emptyQueue() && _digraph->target(_stack[_stack_head]) != t ) 1513 1513 processNextArc(); 1514 1514 } -
lemon/glpk.h
r900 r697 26 26 #include <lemon/lp_base.h> 27 27 28 // forward declaration 29 #if !defined _GLP_PROB && !defined GLP_PROB 30 #define _GLP_PROB 31 #define GLP_PROB 32 typedef struct { double _opaque_prob; } glp_prob; 33 /* LP/MIP problem object */ 34 #endif 35 28 36 namespace lemon { 29 37 30 namespace _solver_bits {31 class VoidPtr {32 private:33 void *_ptr;34 public:35 VoidPtr() : _ptr(0) {}36 37 template <typename T>38 VoidPtr(T* ptr) : _ptr(reinterpret_cast<void*>(ptr)) {}39 40 template <typename T>41 VoidPtr& operator=(T* ptr) {42 _ptr = reinterpret_cast<void*>(ptr);43 return *this;44 }45 46 template <typename T>47 operator T*() const { return reinterpret_cast<T*>(_ptr); }48 };49 }50 38 51 39 /// \brief Base interface for the GLPK LP and MIP solver … … 56 44 protected: 57 45 58 _solver_bits::VoidPtr lp; 46 typedef glp_prob LPX; 47 glp_prob* lp; 59 48 60 49 GlpkBase(); … … 134 123 135 124 ///Pointer to the underlying GLPK data structure. 136 _solver_bits::VoidPtrlpx() {return lp;}125 LPX *lpx() {return lp;} 137 126 ///Const pointer to the underlying GLPK data structure. 138 _solver_bits::VoidPtrlpx() const {return lp;}127 const LPX *lpx() const {return lp;} 139 128 140 129 ///Returns the constraint identifier understood by GLPK. -
lemon/graph_to_eps.h
r908 r664 685 685 #else 686 686 os << bits::getWinFormattedDate(); 687 os << std::endl;688 687 #endif 689 688 } 689 os << std::endl; 690 690 691 691 if (_autoArcWidthScale) { -
lemon/lgf_reader.h
r1069 r646 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 115 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 965 965 int index = 0; 966 966 while (_reader_bits::readToken(line, map)) { 967 if(map == "-") {968 if(index!=0)969 throw FormatError("'-' is not allowed as a map name");970 else if (line >> std::ws >> c)971 throw FormatError("Extra character at the end of line");972 else break;973 }974 967 if (maps.find(map) != maps.end()) { 975 968 std::ostringstream msg; … … 1842 1835 int index = 0; 1843 1836 while (_reader_bits::readToken(line, map)) { 1844 if(map == "-") {1845 if(index!=0)1846 throw FormatError("'-' is not allowed as a map name");1847 else if (line >> std::ws >> c)1848 throw FormatError("Extra character at the end of line");1849 else break;1850 }1851 1837 if (maps.find(map) != maps.end()) { 1852 1838 std::ostringstream msg; -
lemon/lp_base.h
r1092 r631 1605 1605 inline LpBase::Constr operator<=(const LpBase::Expr &e, 1606 1606 const LpBase::Expr &f) { 1607 return LpBase::Constr(0, f - e, LpBase:: NaN);1607 return LpBase::Constr(0, f - e, LpBase::INF); 1608 1608 } 1609 1609 … … 1623 1623 inline LpBase::Constr operator<=(const LpBase::Expr &e, 1624 1624 const LpBase::Value &f) { 1625 return LpBase::Constr( LpBase::NaN, e, f);1625 return LpBase::Constr(- LpBase::INF, e, f); 1626 1626 } 1627 1627 … … 1632 1632 inline LpBase::Constr operator>=(const LpBase::Expr &e, 1633 1633 const LpBase::Expr &f) { 1634 return LpBase::Constr(0, e - f, LpBase:: NaN);1634 return LpBase::Constr(0, e - f, LpBase::INF); 1635 1635 } 1636 1636 … … 1652 1652 inline LpBase::Constr operator>=(const LpBase::Expr &e, 1653 1653 const LpBase::Value &f) { 1654 return LpBase::Constr(f, e, LpBase:: NaN);1654 return LpBase::Constr(f, e, LpBase::INF); 1655 1655 } 1656 1656 -
lemon/path.h
r867 r606 71 71 template <typename CPath> 72 72 Path(const CPath& cpath) { 73 pathCopy(cpath, *this);73 copyPath(*this, cpath); 74 74 } 75 75 … … 79 79 template <typename CPath> 80 80 Path& operator=(const CPath& cpath) { 81 pathCopy(cpath, *this);81 copyPath(*this, cpath); 82 82 return *this; 83 83 } … … 259 259 template <typename CPath> 260 260 SimplePath(const CPath& cpath) { 261 pathCopy(cpath, *this);261 copyPath(*this, cpath); 262 262 } 263 263 … … 268 268 template <typename CPath> 269 269 SimplePath& operator=(const CPath& cpath) { 270 pathCopy(cpath, *this);270 copyPath(*this, cpath); 271 271 return *this; 272 272 } … … 438 438 template <typename CPath> 439 439 ListPath(const CPath& cpath) : first(0), last(0) { 440 pathCopy(cpath, *this);440 copyPath(*this, cpath); 441 441 } 442 442 … … 454 454 template <typename CPath> 455 455 ListPath& operator=(const CPath& cpath) { 456 pathCopy(cpath, *this);456 copyPath(*this, cpath); 457 457 return *this; 458 458 } … … 764 764 template <typename CPath> 765 765 StaticPath(const CPath& cpath) : arcs(0) { 766 pathCopy(cpath, *this);766 copyPath(*this, cpath); 767 767 } 768 768 … … 780 780 template <typename CPath> 781 781 StaticPath& operator=(const CPath& cpath) { 782 pathCopy(cpath, *this);782 copyPath(*this, cpath); 783 783 return *this; 784 784 } … … 929 929 }; 930 930 931 template <typename From, typename To,932 bool buildEnable = BuildTagIndicator<T o>::value>931 template <typename Target, typename Source, 932 bool buildEnable = BuildTagIndicator<Target>::value> 933 933 struct PathCopySelectorForward { 934 static void copy( const From& from, To& to) {935 t o.clear();936 for (typename From::ArcIt it(from); it != INVALID; ++it) {937 t o.addBack(it);934 static void copy(Target& target, const Source& source) { 935 target.clear(); 936 for (typename Source::ArcIt it(source); it != INVALID; ++it) { 937 target.addBack(it); 938 938 } 939 939 } 940 940 }; 941 941 942 template <typename From, typename To>943 struct PathCopySelectorForward< From, To, true> {944 static void copy( const From& from, To& to) {945 t o.clear();946 t o.build(from);947 } 948 }; 949 950 template <typename From, typename To,951 bool buildEnable = BuildTagIndicator<T o>::value>942 template <typename Target, typename Source> 943 struct PathCopySelectorForward<Target, Source, true> { 944 static void copy(Target& target, const Source& source) { 945 target.clear(); 946 target.build(source); 947 } 948 }; 949 950 template <typename Target, typename Source, 951 bool buildEnable = BuildTagIndicator<Target>::value> 952 952 struct PathCopySelectorBackward { 953 static void copy( const From& from, To& to) {954 t o.clear();955 for (typename From::RevArcIt it(from); it != INVALID; ++it) {956 t o.addFront(it);953 static void copy(Target& target, const Source& source) { 954 target.clear(); 955 for (typename Source::RevArcIt it(source); it != INVALID; ++it) { 956 target.addFront(it); 957 957 } 958 958 } 959 959 }; 960 960 961 template <typename From, typename To>962 struct PathCopySelectorBackward< From, To, true> {963 static void copy( const From& from, To& to) {964 t o.clear();965 t o.buildRev(from);961 template <typename Target, typename Source> 962 struct PathCopySelectorBackward<Target, Source, true> { 963 static void copy(Target& target, const Source& source) { 964 target.clear(); 965 target.buildRev(source); 966 966 } 967 967 }; 968 968 969 969 970 template <typename From, typename To,971 bool revEnable = RevPathTagIndicator< From>::value>970 template <typename Target, typename Source, 971 bool revEnable = RevPathTagIndicator<Source>::value> 972 972 struct PathCopySelector { 973 static void copy( const From& from, To& to) {974 PathCopySelectorForward< From, To>::copy(from, to);973 static void copy(Target& target, const Source& source) { 974 PathCopySelectorForward<Target, Source>::copy(target, source); 975 975 } 976 976 }; 977 977 978 template <typename From, typename To>979 struct PathCopySelector< From, To, true> {980 static void copy( const From& from, To& to) {981 PathCopySelectorBackward< From, To>::copy(from, to);978 template <typename Target, typename Source> 979 struct PathCopySelector<Target, Source, true> { 980 static void copy(Target& target, const Source& source) { 981 PathCopySelectorBackward<Target, Source>::copy(target, source); 982 982 } 983 983 }; … … 988 988 /// \brief Make a copy of a path. 989 989 /// 990 /// This function makes a copy of a path. 991 template <typename From, typename To> 992 void pathCopy(const From& from, To& to) { 993 checkConcept<concepts::PathDumper<typename From::Digraph>, From>(); 994 _path_bits::PathCopySelector<From, To>::copy(from, to); 995 } 996 997 /// \brief Deprecated version of \ref pathCopy(). 998 /// 999 /// Deprecated version of \ref pathCopy() (only for reverse compatibility). 1000 template <typename To, typename From> 1001 void copyPath(To& to, const From& from) { 1002 pathCopy(from, to); 990 /// This function makes a copy of a path. 991 template <typename Target, typename Source> 992 void copyPath(Target& target, const Source& source) { 993 checkConcept<concepts::PathDumper<typename Source::Digraph>, Source>(); 994 _path_bits::PathCopySelector<Target, Source>::copy(target, source); 1003 995 } 1004 996 … … 1024 1016 /// \brief The source of a path 1025 1017 /// 1026 /// This function returns the source node of the given path. 1027 /// If the path is empty, then it returns \c INVALID. 1018 /// This function returns the source of the given path. 1028 1019 template <typename Digraph, typename Path> 1029 1020 typename Digraph::Node pathSource(const Digraph& digraph, const Path& path) { 1030 return path.empty() ? INVALID :digraph.source(path.front());1021 return digraph.source(path.front()); 1031 1022 } 1032 1023 1033 1024 /// \brief The target of a path 1034 1025 /// 1035 /// This function returns the target node of the given path. 1036 /// If the path is empty, then it returns \c INVALID. 1026 /// This function returns the target of the given path. 1037 1027 template <typename Digraph, typename Path> 1038 1028 typename Digraph::Node pathTarget(const Digraph& digraph, const Path& path) { 1039 return path.empty() ? INVALID :digraph.target(path.back());1029 return digraph.target(path.back()); 1040 1030 } 1041 1031 -
test/CMakeLists.txt
r1069 r1033 7 7 ${PROJECT_BINARY_DIR}/lemon 8 8 ) 9 10 SET(TEST_WITH_VALGRIND "NO" CACHE STRING11 "Run the test with valgrind (YES/NO).")12 SET(VALGRIND_FLAGS "" CACHE STRING "Valgrind flags used by the tests.")13 9 14 10 SET(TESTS … … 32 28 heap_test 33 29 kruskal_test 34 lgf_test35 30 maps_test 36 31 matching_test … … 67 62 TARGET_LINK_LIBRARIES(lp_test ${LP_TEST_LIBS}) 68 63 ADD_TEST(lp_test lp_test) 69 ADD_DEPENDENCIES(check lp_test)70 64 71 65 IF(WIN32 AND LEMON_HAVE_GLPK) … … 109 103 TARGET_LINK_LIBRARIES(mip_test ${MIP_TEST_LIBS}) 110 104 ADD_TEST(mip_test mip_test) 111 ADD_DEPENDENCIES(check mip_test)112 105 113 106 IF(WIN32 AND LEMON_HAVE_GLPK) … … 137 130 ENDIF() 138 131 TARGET_LINK_LIBRARIES(${TEST_NAME} lemon) 139 IF(TEST_WITH_VALGRIND) 140 ADD_TEST(${TEST_NAME} 141 valgrind --error-exitcode=1 ${VALGRIND_FLAGS} 142 ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME} ) 143 ELSE() 144 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 145 ENDIF() 132 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 146 133 ADD_DEPENDENCIES(check ${TEST_NAME}) 147 134 ENDFOREACH() -
test/Makefile.am
r1102 r696 26 26 test/heap_test \ 27 27 test/kruskal_test \ 28 test/lgf_test \29 28 test/maps_test \ 30 29 test/matching_test \ … … 72 71 test_kruskal_test_SOURCES = test/kruskal_test.cc 73 72 test_hao_orlin_test_SOURCES = test/hao_orlin_test.cc 74 test_lgf_test_SOURCES = test/lgf_test.cc75 73 test_lp_test_SOURCES = test/lp_test.cc 76 74 test_maps_test_SOURCES = test/maps_test.cc -
test/dfs_test.cc
r1009 r632 51 51 "@attributes\n" 52 52 "source 0\n" 53 "target 5\n" 54 "source1 6\n" 55 "target1 3\n"; 56 53 "target 5\n"; 57 54 58 55 void checkDfsCompile() … … 183 180 Digraph G; 184 181 Node s, t; 185 Node s1, t1;186 182 187 183 std::istringstream input(test_lgf); … … 189 185 node("source", s). 190 186 node("target", t). 191 node("source1", s1).192 node("target1", t1).193 187 run(); 194 188 … … 217 211 218 212 { 219 Dfs<Digraph> dfs(G);220 check(dfs.run(s1,t1) && dfs.reached(t1),"Node 3 is reachable from Node 6.");221 }222 223 {224 213 NullMap<Node,Arc> myPredMap; 225 214 dfs(G).predMap(myPredMap).run(s); -
test/graph_copy_test.cc
r984 r463 30 30 const int nn = 10; 31 31 32 // Build a digraph33 32 SmartDigraph from; 34 33 SmartDigraph::NodeMap<int> fnm(from); … … 53 52 } 54 53 55 // Test digraph copy56 54 ListDigraph to; 57 55 ListDigraph::NodeMap<int> tnm(to); … … 71 69 nodeCrossRef(ncr).arcCrossRef(ecr). 72 70 node(fn, tn).arc(fa, ta).run(); 73 74 check(countNodes(from) == countNodes(to), "Wrong copy.");75 check(countArcs(from) == countArcs(to), "Wrong copy.");76 71 77 72 for (SmartDigraph::NodeIt it(from); it != INVALID; ++it) { … … 96 91 check(tn == nr[fn], "Wrong copy."); 97 92 check(ta == er[fa], "Wrong copy."); 98 99 // Test repeated copy100 digraphCopy(from, to).run();101 102 check(countNodes(from) == countNodes(to), "Wrong copy.");103 check(countArcs(from) == countArcs(to), "Wrong copy.");104 93 } 105 94 … … 107 96 const int nn = 10; 108 97 109 // Build a graph110 98 SmartGraph from; 111 99 SmartGraph::NodeMap<int> fnm(from); … … 135 123 } 136 124 137 // Test graph copy138 125 ListGraph to; 139 126 ListGraph::NodeMap<int> tnm(to); … … 157 144 nodeCrossRef(ncr).arcCrossRef(acr).edgeCrossRef(ecr). 158 145 node(fn, tn).arc(fa, ta).edge(fe, te).run(); 159 160 check(countNodes(from) == countNodes(to), "Wrong copy.");161 check(countEdges(from) == countEdges(to), "Wrong copy.");162 check(countArcs(from) == countArcs(to), "Wrong copy.");163 146 164 147 for (SmartGraph::NodeIt it(from); it != INVALID; ++it) { … … 198 181 check(ta == ar[fa], "Wrong copy."); 199 182 check(te == er[fe], "Wrong copy."); 200 201 // Test repeated copy202 graphCopy(from, to).run();203 204 check(countNodes(from) == countNodes(to), "Wrong copy.");205 check(countEdges(from) == countEdges(to), "Wrong copy.");206 check(countArcs(from) == countArcs(to), "Wrong copy.");207 183 } 208 184 -
test/heap_test.cc
r728 r463 32 32 33 33 #include <lemon/bin_heap.h> 34 #include <lemon/fib_heap.h>35 #include <lemon/radix_heap.h>36 #include <lemon/bucket_heap.h>37 34 38 35 #include "test_tools.h" … … 187 184 } 188 185 189 {190 typedef FibHeap<Prio, ItemIntMap> IntHeap;191 checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();192 heapSortTest<IntHeap>();193 heapIncreaseTest<IntHeap>();194 195 typedef FibHeap<Prio, IntNodeMap > NodeHeap;196 checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();197 dijkstraHeapTest<NodeHeap>(digraph, length, source);198 }199 200 {201 typedef RadixHeap<ItemIntMap> IntHeap;202 checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();203 heapSortTest<IntHeap>();204 heapIncreaseTest<IntHeap>();205 206 typedef RadixHeap<IntNodeMap > NodeHeap;207 checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();208 dijkstraHeapTest<NodeHeap>(digraph, length, source);209 }210 211 {212 typedef BucketHeap<ItemIntMap> IntHeap;213 checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();214 heapSortTest<IntHeap>();215 heapIncreaseTest<IntHeap>();216 217 typedef BucketHeap<IntNodeMap > NodeHeap;218 checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();219 dijkstraHeapTest<NodeHeap>(digraph, length, source);220 }221 222 223 186 return 0; 224 187 } -
test/lp_test.cc
r1092 r678 167 167 c = ((2 >= p1) >= 3); 168 168 169 { //Tests for #430170 LP::Col v=lp.addCol();171 LP::Constr c = v >= -3;172 c = c <= 4;173 LP::Constr c2;174 c2 = -3 <= v <= 4;175 }176 177 169 e[x[3]]=2; 178 170 e[x[3]]=4;
Note: See TracChangeset
for help on using the changeset viewer.