snap-2017-07-23

Changes since last snapshot

  • Graph6 format (with explicit header!) is added to the generic reader
    • graph algorithms:
    • new isTwoEdgeConnected() to check a graph for 2-edge-connectivity
    • renamed and deprecated some forest functions with misleading names
    • algorithms in graphalg/ShortestPathAlgorithms.h are now templates
  • graph generators:
    • new randomSimpleConnectedGraph() generator
    • made randomTree() faster
  • geometry classes:
    • DPoint, IPoint are now template specializations of GenericPoint
    • DPolyline, IPolyline are now template specializations of new
      GenericPolyline
    • new GenericLine and new GenericSegment represent (infinite) lines and
      (finite) line segments, respectively, replacing DLine being a mix
      of both (for double only); breaking changes!
    • improved intersection methods of these classes
    • removed: DVector (simply use DPoint), DScaler, DRound
    • new DRect::intersection()
    • fixed bug and generalized DPolyline::normalize()
  • very basic types:
    • removed classes Stack, StackPure, BoundedStack in favor of ArrayBuffer
    • made Skiplist usable with range-based for-loops
    • new == and != operators for Array and ArrayBuffer
    • add Graph::allNodes() and Graph::allEdges() for arrays
    • Math:
      • Math is now a namespace instead of a static class
      • new radiansToDegrees() and degreesToRadians()
      • new updateMin() and updateMax()
      • new nextPower2()
  • further removed classes:
    • MixedForceLayout
    • HyperGraph (but Hypergraph still exists)
    • EList, EFreeList, EStack
  • build system (CMake) changes:
    • new option OGDF_WARNING_ERRORS to treat (some) warnings as errors
    • new option OGDF_DEBUG_MODE to enable even more costly debugging
    • NOMINMAX is defined for Windows
    • thread affinity is set under Linux for Fast Multipole Embedder
  • general (sometimes internal) changes:
    • new GenericComparer, replaces simple custom comparers by using lambdas
    • many std things imported into the ogdf namespace are now removed from it
      (e.g., swap, [io]stream, numeric_limits, cin, cout, endl, flush, ios)
    • new safeForEach() and safeTestForEach() as simple functions to iterate
      over containers destructively (i.e., the current member of an iteration
      may be destroyed)
    • SubsetEnumerator is now less dependent on a particular List type
    • further code deduplications and simplifications
    • silenced many classes
    • replaced some List usages by ArrayBuffer where sufficient
    • initialized former uninitialized member variables
    • fixed implicit fallthrough warnings
    • improved readability and consistency in code
    • improved const-correctness
    • improved documentation
    • new tests and looooooots of bug fixes

Note that the minimum supported version for GCC changed to 4.9.2.