../../README.md "OGDF" » ../dev-guide.md "Developer's Guide" » ../porting.md "Porting Guide" » Unreleased
OGDF now requires C++17 features. We no longer officially support compilers older than gcc 9, clang 9 or Visual Studio 2017 15.8 (MSVC 19.15).
When their height is equal to their width, Shape::Triangle
and Shape::InvTriangle
are now drawn as regular triangles in SVGs (and not as just isosceles ones).
TikzWriter::isCoveredBy()
was removed in favor of isPointCoveredByNode()
in geometry.h
.
RegisteredArray
, the underlying class for NodeArray
, EdgeArray
etc. now uses std::vector
instead of ogdf::Array
for data storage. If the stored elements have a non-trivial move-constructor, it should be marked noexcept
. Otherwise, all elements will be copied when the array grows.
ClusterSetSimple
was removed in favor of ClusterArray<bool>
and ClusterSetPure
in favor of ClusterSet<false>
(which does not keep track of its size).
The move constructor and assignment operators of Graph
are now deleted, which especially means that NodeArray<Graph>
, EdgeArray<Graph>
, FaceArray<Graph>
, etc. is no longer possible. (Previously it compiled, but randomly broke at runtime when adding new nodes.) Use NodeArrayP<Graph>
, EdgeArrayP<Graph>
, FaceArrayP<Graph>
, etc. instead to wrap the Graph
s in std::unique_ptr
s and then make one pass over all entries to initialize the pointers. See the documentation of NodeArrayP
for usage as member variable on MSVC<=16. For this reason, SimDraw::getBasicGraph
now returns a std::unique_ptr<GraphCopy>
instead of copying a Graph
object on return.
GraphCopy::createEmpty()
was deprecated in favor of setOriginalGraph()
. The same holds for createEmpty()
of GraphCopySimple
and EdgeWeightedGraph
.
GraphObserver
s are now notified when their Graph
is destructed through GraphObserver::registrationChanged()
.
ClusterGraphObserver
s are now notified of their ClusterGraph
being cleared through ClusterGraphObserver::clustersCleared()
.
HypergraphObserver::init()
was deprecated in favor of reregister()
.
Observer
s and their Observable
s now have deleted copy and move constructors and assignment operators. Subclasses can instead explicitly declare their copy and move behaviour using the default constructors of Observer
/ Observable
, Observer::getObservers()
, Observer::clearObservers()
and Observable::reregister()
.
Multiple methods for inserting (parts of) a graph were merged into a single Graph::insert
implementation. This implementation is also used when copy-constructing or (in combination with clear) when copy-assigning. It replaces the following different implementations, which were removed:
GraphCopy::insert
(and GraphCopySimple::insert
) will automatically update its mappings when inserting parts of the original Graph. This can be disabled by using setLinkCopiesOnInsert
.