Changes in / [964:2b6bffe0e7e8:942:633956ca9421] in lemon-main
- Files:
-
- 1 added
- 3 deleted
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
AUTHORS
r951 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 -
CMakeLists.txt
r964 r744 3 3 SET(PROJECT_NAME "LEMON") 4 4 PROJECT(${PROJECT_NAME}) 5 6 INCLUDE(FindPythonInterp)7 INCLUDE(FindWget)8 5 9 6 IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake) … … 12 9 SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.") 13 10 ELSE() 14 EXECUTE_PROCESS(15 COMMAND ${PYTHON_EXECUTABLE} ./scripts/chg-len.py16 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}17 OUTPUT_VARIABLE HG_REVISION_PATH18 ERROR_QUIET19 OUTPUT_STRIP_TRAILING_WHITESPACE20 )21 11 EXECUTE_PROCESS( 22 12 COMMAND hg id -i … … 27 17 ) 28 18 IF(HG_REVISION STREQUAL "") 29 SET(HG_REVISION_ID "hg-tip") 30 ELSE() 31 IF(HG_REVISION_PATH STREQUAL "") 32 SET(HG_REVISION_ID ${HG_REVISION}) 33 ELSE() 34 SET(HG_REVISION_ID ${HG_REVISION_PATH}.${HG_REVISION}) 35 ENDIF() 19 SET(HG_REVISION "hg-tip") 36 20 ENDIF() 37 SET(LEMON_VERSION ${HG_REVISION _ID} CACHE STRING "LEMON version string.")21 SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.") 38 22 ENDIF() 39 23 … … 48 32 FIND_PACKAGE(COIN) 49 33 50 IF(DEFINED ENV{LEMON_CXX_WARNING})51 SET(CXX_WARNING $ENV{LEMON_CXX_WARNING})52 ELSE()53 IF(CMAKE_COMPILER_IS_GNUCXX)54 SET(CXX_WARNING "-Wall -W -Wunused -Wformat=2 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wno-char-subscripts -Wwrite-strings -Wno-char-subscripts -Wreturn-type -Wcast-qual -Wcast-align -Wsign-promo -Woverloaded-virtual -fno-strict-aliasing -Wold-style-cast -Wno-unknown-pragmas")55 SET(CMAKE_CXX_FLAGS_DEBUG CACHE STRING "-ggdb")56 SET(CMAKE_C_FLAGS_DEBUG CACHE STRING "-ggdb")57 ELSEIF(MSVC)58 # This part is unnecessary 'casue the same is set by the lemon/core.h.59 # Still keep it as an example.60 SET(CXX_WARNING "/wd4250 /wd4355 /wd4503 /wd4800 /wd4996")61 # Suppressed warnings:62 # C4250: 'class1' : inherits 'class2::member' via dominance63 # C4355: 'this' : used in base member initializer list64 # C4503: 'function' : decorated name length exceeded, name was truncated65 # C4800: 'type' : forcing value to bool 'true' or 'false'66 # (performance warning)67 # C4996: 'function': was declared deprecated68 ELSE()69 SET(CXX_WARNING "-Wall -W")70 ENDIF()71 ENDIF()72 SET(LEMON_CXX_WARNING_FLAGS ${CXX_WARNING} CACHE STRING "LEMON warning flags.")73 74 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LEMON_CXX_WARNING_FLAGS}")75 76 SET( CMAKE_CXX_FLAGS_MAINTAINER "-Werror -ggdb" CACHE STRING77 "Flags used by the C++ compiler during maintainer builds."78 FORCE )79 SET( CMAKE_C_FLAGS_MAINTAINER "-Werror" CACHE STRING80 "Flags used by the C compiler during maintainer builds."81 FORCE )82 SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER83 "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING84 "Flags used for linking binaries during maintainer builds."85 FORCE )86 SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER87 "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING88 "Flags used by the shared libraries linker during maintainer builds."89 FORCE )90 MARK_AS_ADVANCED(91 CMAKE_CXX_FLAGS_MAINTAINER92 CMAKE_C_FLAGS_MAINTAINER93 CMAKE_EXE_LINKER_FLAGS_MAINTAINER94 CMAKE_SHARED_LINKER_FLAGS_MAINTAINER )95 96 IF(CMAKE_CONFIGURATION_TYPES)97 LIST(APPEND CMAKE_CONFIGURATION_TYPES Maintainer)98 LIST(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)99 SET(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING100 "Add the configurations that we need"101 FORCE)102 endif()103 104 IF(NOT CMAKE_BUILD_TYPE)105 SET(CMAKE_BUILD_TYPE "Release")106 ENDIF()107 108 SET( CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING109 "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel Maintainer."110 FORCE )111 112 113 34 INCLUDE(CheckTypeSize) 114 35 CHECK_TYPE_SIZE("long long" LONG_LONG) … … 118 39 119 40 ENABLE_TESTING() 120 121 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer")122 ADD_CUSTOM_TARGET(check ALL COMMAND ${CMAKE_CTEST_COMMAND})123 ELSE()124 ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND})125 ENDIF()126 41 127 42 ADD_SUBDIRECTORY(lemon) … … 150 65 ENDIF() 151 66 152 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} )67 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32) 153 68 SET(CPACK_PACKAGE_NAME ${PROJECT_NAME}) 154 69 SET(CPACK_PACKAGE_VENDOR "EGRES") -
cmake/FindCOIN.cmake
r947 r634 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
r930 r793 115 115 dnl Add dependencies on files generated by configure. 116 116 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], 117 ['$(top_srcdir)/doc/Doxyfile.in $(top_srcdir)/ doc/mainpage.dox.in $(top_srcdir)/lemon/lemon.pc.in $(top_srcdir)/cmake/version.cmake.in'])117 ['$(top_srcdir)/doc/Doxyfile.in $(top_srcdir)/lemon/lemon.pc.in $(top_srcdir)/cmake/version.cmake.in']) 118 118 119 119 AC_CONFIG_FILES([ … … 122 122 cmake/version.cmake 123 123 doc/Doxyfile 124 doc/mainpage.dox125 124 lemon/lemon.pc 126 125 ]) -
doc/CMakeLists.txt
r964 r865 4 4 SET(abs_top_builddir ${PROJECT_BINARY_DIR}) 5 5 6 SET(LEMON_DOC_SOURCE_BROWSER "NO" CACHE STRING "Include source into the doc (YES/NO).")7 8 6 CONFIGURE_FILE( 9 7 ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in 10 8 ${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 9 @ONLY 18 10 ) … … 61 53 62 54 ENDIF() 63 64 IF(WGET_FOUND)65 ADD_CUSTOM_TARGET(update-external-tags66 COMMAND ${CMAKE_COMMAND} -E make_directory dl67 # COMMAND ${CMAKE_COMMAND} -E copy libstdc++.tag dl68 COMMAND ${WGET_EXECUTABLE} wget -P dl -N libstdc++.tag.tmp http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/libstdc++.tag69 COMMAND ${CMAKE_COMMAND} -E rename dl/libstdc++.tag libstdc++.tag70 COMMAND ${CMAKE_COMMAND} -E remove dl/libstdc++.tag71 COMMAND ${CMAKE_COMMAND} -E remove_directory dl72 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}73 )74 ENDIF() -
doc/Doxyfile.in
r964 r756 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 … … 77 71 SHOW_NAMESPACES = YES 78 72 FILE_VERSION_FILTER = 79 LAYOUT_FILE = "@abs_top_srcdir@/doc/DoxygenLayout.xml"73 LAYOUT_FILE = DoxygenLayout.xml 80 74 #--------------------------------------------------------------------------- 81 75 # configuration options related to warning and progress messages … … 98 92 "@abs_top_srcdir@/tools" \ 99 93 "@abs_top_srcdir@/test/test_tools.h" \ 100 "@abs_top_builddir@/doc/mainpage.dox" \101 94 "@abs_top_builddir@/doc/references.dox" 102 95 INPUT_ENCODING = UTF-8 … … 119 112 FILTER_PATTERNS = 120 113 FILTER_SOURCE_FILES = NO 121 FILTER_SOURCE_PATTERNS =122 114 #--------------------------------------------------------------------------- 123 115 # configuration options related to source browsing 124 116 #--------------------------------------------------------------------------- 125 SOURCE_BROWSER = @LEMON_DOC_SOURCE_BROWSER@117 SOURCE_BROWSER = NO 126 118 INLINE_SOURCES = NO 127 119 STRIP_CODE_COMMENTS = YES … … 146 138 HTML_FOOTER = 147 139 HTML_STYLESHEET = 148 HTML_COLORSTYLE_HUE = 220149 HTML_COLORSTYLE_SAT = 100150 HTML_COLORSTYLE_GAMMA = 80151 HTML_TIMESTAMP = YES152 140 HTML_ALIGN_MEMBERS = YES 153 HTML_DYNAMIC_SECTIONS = YES141 HTML_DYNAMIC_SECTIONS = NO 154 142 GENERATE_DOCSET = NO 155 143 DOCSET_FEEDNAME = "Doxygen generated docs" 156 144 DOCSET_BUNDLE_ID = org.doxygen.Project 157 DOCSET_PUBLISHER_ID = org.doxygen.Publisher158 DOCSET_PUBLISHER_NAME = Publisher159 145 GENERATE_HTMLHELP = NO 160 146 CHM_FILE = … … 168 154 QHP_NAMESPACE = org.doxygen.Project 169 155 QHP_VIRTUAL_FOLDER = doc 170 QHP_CUST_FILTER_NAME =171 QHP_CUST_FILTER_ATTRS =172 QHP_SECT_FILTER_ATTRS =173 156 QHG_LOCATION = 174 GENERATE_ECLIPSEHELP = NO175 ECLIPSE_DOC_ID = org.doxygen.Project176 157 DISABLE_INDEX = NO 177 158 ENUM_VALUES_PER_LINE = 4 178 159 GENERATE_TREEVIEW = NO 179 USE_INLINE_TREES = NO180 160 TREEVIEW_WIDTH = 250 181 EXT_LINKS_IN_WINDOW = NO182 161 FORMULA_FONTSIZE = 10 183 FORMULA_TRANSPARENT = YES184 USE_MATHJAX = NO185 MATHJAX_RELPATH = http://www.mathjax.org/mathjax186 SEARCHENGINE = YES187 SERVER_BASED_SEARCH = NO188 162 #--------------------------------------------------------------------------- 189 163 # configuration options related to the LaTeX output … … 202 176 LATEX_BATCHMODE = NO 203 177 LATEX_HIDE_INDICES = NO 204 LATEX_SOURCE_CODE = NO205 178 #--------------------------------------------------------------------------- 206 179 # configuration options related to the RTF output … … 251 224 SKIP_FUNCTION_MACROS = YES 252 225 #--------------------------------------------------------------------------- 253 # Configuration::additions related to external references254 #--------------------------------------------------------------------------- 255 TAGFILES = "@abs_top_ builddir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/ "226 # Options related to the search engine 227 #--------------------------------------------------------------------------- 228 TAGFILES = "@abs_top_srcdir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/ " 256 229 GENERATE_TAGFILE = html/lemon.tag 257 230 ALLEXTERNALS = NO … … 265 238 HIDE_UNDOC_RELATIONS = YES 266 239 HAVE_DOT = YES 267 DOT_NUM_THREADS = 0268 240 DOT_FONTNAME = FreeSans 269 241 DOT_FONTSIZE = 10 … … 283 255 DOT_PATH = 284 256 DOTFILE_DIRS = 285 MSCFILE_DIRS =286 257 DOT_GRAPH_MAX_NODES = 50 287 258 MAX_DOT_GRAPH_DEPTH = 0 … … 290 261 GENERATE_LEGEND = YES 291 262 DOT_CLEANUP = YES 263 #--------------------------------------------------------------------------- 264 # Configuration::additions related to the search engine 265 #--------------------------------------------------------------------------- 266 SEARCHENGINE = NO -
doc/DoxygenLayout.xml
r928 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
r950 r440 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/CMakeLists.txt
r908 r679 7 7 ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake 8 8 ${CMAKE_CURRENT_BINARY_DIR}/config.h 9 )10 11 CONFIGURE_FILE(12 ${CMAKE_CURRENT_SOURCE_DIR}/lemon.pc.cmake13 ${CMAKE_CURRENT_BINARY_DIR}/lemon.pc14 @ONLY15 9 ) 16 10 … … 73 67 COMPONENT headers 74 68 ) 75 76 INSTALL(77 FILES ${CMAKE_CURRENT_BINARY_DIR}/lemon.pc78 DESTINATION lib/pkgconfig79 )80 -
lemon/Makefile.am
r964 r874 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 -
lemon/bits/edge_set_extender.h
r964 r877 281 281 typedef EdgeSetExtender Graph; 282 282 283 typedef True UndirectedTag;284 285 283 typedef typename Parent::Node Node; 286 284 typedef typename Parent::Arc Arc; -
lemon/bits/graph_adaptor_extender.h
r882 r617 182 182 typedef GraphAdaptorExtender Adaptor; 183 183 184 typedef True UndirectedTag;185 186 184 typedef typename Parent::Node Node; 187 185 typedef typename Parent::Arc Arc; -
lemon/bits/path_dump.h
r887 r529 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/bits/windows.cc
r941 r877 41 41 #include <unistd.h> 42 42 #include <ctime> 43 #ifndef WIN3244 43 #include <sys/times.h> 45 #endif46 44 #include <sys/time.h> 47 45 #endif -
lemon/core.h
r964 r877 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
r964 r877 566 566 void start(Node t) 567 567 { 568 while ( !emptyQueue() && !(*_reached)[t])568 while ( !emptyQueue() && G->target(_stack[_stack_head])!=t ) 569 569 processNextArc(); 570 570 } … … 1513 1513 /// with addSource() before using this function. 1514 1514 void start(Node t) { 1515 while ( !emptyQueue() && !(*_reached)[t])1515 while ( !emptyQueue() && _digraph->target(_stack[_stack_head]) != t ) 1516 1516 processNextArc(); 1517 1517 } -
lemon/lgf_reader.h
r964 r877 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 15 * Copyright (C) 2003-2010 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
r958 r877 1619 1619 inline LpBase::Constr operator<=(const LpBase::Expr &e, 1620 1620 const LpBase::Expr &f) { 1621 return LpBase::Constr(0, f - e, LpBase:: NaN);1621 return LpBase::Constr(0, f - e, LpBase::INF); 1622 1622 } 1623 1623 … … 1637 1637 inline LpBase::Constr operator<=(const LpBase::Expr &e, 1638 1638 const LpBase::Value &f) { 1639 return LpBase::Constr( LpBase::NaN, e, f);1639 return LpBase::Constr(- LpBase::INF, e, f); 1640 1640 } 1641 1641 … … 1646 1646 inline LpBase::Constr operator>=(const LpBase::Expr &e, 1647 1647 const LpBase::Expr &f) { 1648 return LpBase::Constr(0, e - f, LpBase:: NaN);1648 return LpBase::Constr(0, e - f, LpBase::INF); 1649 1649 } 1650 1650 … … 1666 1666 inline LpBase::Constr operator>=(const LpBase::Expr &e, 1667 1667 const LpBase::Value &f) { 1668 return LpBase::Constr(f, e, LpBase:: NaN);1668 return LpBase::Constr(f, e, LpBase::INF); 1669 1669 } 1670 1670 -
lemon/network_simplex.h
r889 r877 1078 1078 ART_COST = std::numeric_limits<Cost>::max() / 2 + 1; 1079 1079 } else { 1080 ART_COST = 0;1080 ART_COST = std::numeric_limits<Cost>::min(); 1081 1081 for (int i = 0; i != _arc_num; ++i) { 1082 1082 if (_cost[i] > ART_COST) ART_COST = _cost[i]; … … 1590 1590 if (_sum_supply == 0) { 1591 1591 if (_stype == GEQ) { 1592 Cost max_pot = -std::numeric_limits<Cost>::max();1592 Cost max_pot = std::numeric_limits<Cost>::min(); 1593 1593 for (int i = 0; i != _node_num; ++i) { 1594 1594 if (_pi[i] > max_pot) max_pot = _pi[i]; -
lemon/preflow.h
r964 r877 544 544 _flow->set(e, (*_capacity)[e]); 545 545 (*_excess)[u] += rem; 546 if (u != _target && !_level->active(u)) { 547 _level->activate(u); 548 } 546 549 } 547 550 } … … 553 556 _flow->set(e, 0); 554 557 (*_excess)[v] += rem; 555 } 556 } 557 for (NodeIt n(_graph); n != INVALID; ++n) 558 if(n!=_source && n!=_target && _tolerance.positive((*_excess)[n])) 559 _level->activate(n); 560 558 if (v != _target && !_level->active(v)) { 559 _level->activate(v); 560 } 561 } 562 } 561 563 return true; 562 564 } … … 575 577 _phase = true; 576 578 577 while (true) { 579 Node n = _level->highestActive(); 580 int level = _level->highestActiveLevel(); 581 while (n != INVALID) { 578 582 int num = _node_num; 579 583 580 Node n = INVALID; 581 int level = -1; 582 583 while (num > 0) { 584 n = _level->highestActive(); 585 if (n == INVALID) goto first_phase_done; 586 level = _level->highestActiveLevel(); 587 --num; 588 584 while (num > 0 && n != INVALID) { 589 585 Value excess = (*_excess)[n]; 590 586 int new_level = _level->maxLevel(); … … 652 648 _level->deactivate(n); 653 649 } 650 651 n = _level->highestActive(); 652 level = _level->highestActiveLevel(); 653 --num; 654 654 } 655 655 656 656 num = _node_num * 20; 657 while (num > 0) { 658 while (level >= 0 && _level->activeFree(level)) { 659 --level; 660 } 661 if (level == -1) { 662 n = _level->highestActive(); 663 level = _level->highestActiveLevel(); 664 if (n == INVALID) goto first_phase_done; 665 } else { 666 n = _level->activeOn(level); 667 } 668 --num; 669 657 while (num > 0 && n != INVALID) { 670 658 Value excess = (*_excess)[n]; 671 659 int new_level = _level->maxLevel(); … … 733 721 _level->deactivate(n); 734 722 } 735 } 736 } 737 first_phase_done:; 723 724 while (level >= 0 && _level->activeFree(level)) { 725 --level; 726 } 727 if (level == -1) { 728 n = _level->highestActive(); 729 level = _level->highestActiveLevel(); 730 } else { 731 n = _level->activeOn(level); 732 } 733 --num; 734 } 735 } 738 736 } 739 737 -
test/CMakeLists.txt
r964 r874 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 … … 34 30 heap_test 35 31 kruskal_test 36 lgf_test37 32 maps_test 38 33 matching_test … … 51 46 52 47 IF(LEMON_HAVE_LP) 53 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer") 54 ADD_EXECUTABLE(lp_test lp_test.cc) 55 ELSE() 56 ADD_EXECUTABLE(lp_test EXCLUDE_FROM_ALL lp_test.cc) 57 ENDIF() 58 48 ADD_EXECUTABLE(lp_test lp_test.cc) 59 49 SET(LP_TEST_LIBS lemon) 60 50 … … 71 61 TARGET_LINK_LIBRARIES(lp_test ${LP_TEST_LIBS}) 72 62 ADD_TEST(lp_test lp_test) 73 ADD_DEPENDENCIES(check lp_test)74 63 75 64 IF(WIN32 AND LEMON_HAVE_GLPK) … … 93 82 94 83 IF(LEMON_HAVE_MIP) 95 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer") 96 ADD_EXECUTABLE(mip_test mip_test.cc) 97 ELSE() 98 ADD_EXECUTABLE(mip_test EXCLUDE_FROM_ALL mip_test.cc) 99 ENDIF() 100 84 ADD_EXECUTABLE(mip_test mip_test.cc) 101 85 SET(MIP_TEST_LIBS lemon) 102 86 … … 113 97 TARGET_LINK_LIBRARIES(mip_test ${MIP_TEST_LIBS}) 114 98 ADD_TEST(mip_test mip_test) 115 ADD_DEPENDENCIES(check mip_test)116 99 117 100 IF(WIN32 AND LEMON_HAVE_GLPK) … … 135 118 136 119 FOREACH(TEST_NAME ${TESTS}) 137 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer") 138 ADD_EXECUTABLE(${TEST_NAME} ${TEST_NAME}.cc) 139 ELSE() 140 ADD_EXECUTABLE(${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_NAME}.cc) 141 ENDIF() 120 ADD_EXECUTABLE(${TEST_NAME} ${TEST_NAME}.cc) 142 121 TARGET_LINK_LIBRARIES(${TEST_NAME} lemon) 143 IF(TEST_WITH_VALGRIND) 144 ADD_TEST(${TEST_NAME} 145 valgrind --error-exitcode=1 ${VALGRIND_FLAGS} 146 ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME} ) 147 ELSE() 148 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 149 ENDIF() 150 ADD_DEPENDENCIES(check ${TEST_NAME}) 122 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 151 123 ENDFOREACH() -
test/Makefile.am
r964 r874 32 32 test/heap_test \ 33 33 test/kruskal_test \ 34 test/lgf_test \35 34 test/maps_test \ 36 35 test/matching_test \ … … 82 81 test_kruskal_test_SOURCES = test/kruskal_test.cc 83 82 test_hao_orlin_test_SOURCES = test/hao_orlin_test.cc 84 test_lgf_test_SOURCES = test/lgf_test.cc85 83 test_lp_test_SOURCES = test/lp_test.cc 86 84 test_maps_test_SOURCES = test/maps_test.cc -
test/dfs_test.cc
r964 r877 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
r893 r440 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
r948 r855 273 273 } 274 274 275 {276 typedef FibHeap<Prio, ItemIntMap> IntHeap;277 checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();278 heapSortTest<IntHeap>();279 heapIncreaseTest<IntHeap>();280 281 typedef FibHeap<Prio, IntNodeMap > NodeHeap;282 checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();283 dijkstraHeapTest<NodeHeap>(digraph, length, source);284 }285 286 {287 typedef RadixHeap<ItemIntMap> IntHeap;288 checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();289 heapSortTest<IntHeap>();290 heapIncreaseTest<IntHeap>();291 292 typedef RadixHeap<IntNodeMap > NodeHeap;293 checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();294 dijkstraHeapTest<NodeHeap>(digraph, length, source);295 }296 297 {298 typedef BucketHeap<ItemIntMap> IntHeap;299 checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();300 heapSortTest<IntHeap>();301 heapIncreaseTest<IntHeap>();302 303 typedef BucketHeap<IntNodeMap > NodeHeap;304 checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();305 dijkstraHeapTest<NodeHeap>(digraph, length, source);306 }307 308 309 275 return 0; 310 276 } -
test/lp_test.cc
r957 r631 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; -
test/preflow_test.cc
r924 r877 157 157 } 158 158 159 void initFlowTest()160 {161 DIGRAPH_TYPEDEFS(SmartDigraph);162 163 SmartDigraph g;164 SmartDigraph::ArcMap<int> cap(g),iflow(g);165 Node s=g.addNode(); Node t=g.addNode();166 Node n1=g.addNode(); Node n2=g.addNode();167 Arc a;168 a=g.addArc(s,n1); cap[a]=20; iflow[a]=20;169 a=g.addArc(n1,n2); cap[a]=10; iflow[a]=0;170 a=g.addArc(n2,t); cap[a]=20; iflow[a]=0;171 172 Preflow<SmartDigraph> pre(g,cap,s,t);173 pre.init(iflow);174 pre.startFirstPhase();175 check(pre.flowValue() == 10, "The incorrect max flow value.");176 check(pre.minCut(s), "Wrong min cut (Node s).");177 check(pre.minCut(n1), "Wrong min cut (Node n1).");178 check(!pre.minCut(n2), "Wrong min cut (Node n2).");179 check(!pre.minCut(t), "Wrong min cut (Node t).");180 }181 182 183 159 int main() { 184 160 … … 271 247 "The max flow value or the three min cut values are incorrect."); 272 248 273 initFlowTest();274 275 249 return 0; 276 250 }
Note: See TracChangeset
for help on using the changeset viewer.