Version 0.9
Pre-release
Pre-release
Changes in response to adding graph support to Volume Cartographer:
- (project)
- Add
smgl/smgl.hpp
header to make includes easier in downstream application code. Downstream library code should still include only the headers needed. - Fixed bug where
FindFilesystem.cmake
was forcing C++17 mode even when the project did not use std::filesystem. - (TypeTraits) New header of custom type traits for template metaprogramming.
- Add
- (docs)
- Add tag file for auto-linking to cppreference.com and generate a Smeagol tag file.
- Add tutorial on building a custom node class.
- (Factory) Add Reserve and ReserveAdditional methods to ensure efficient mass registration of node types.
- (Graph)
- Fix bug where
Graph::Version
was not declared correctly for C++11/14. - New member function
size()
which returns number of nodes in the graph. - New member functions for setting arbitrary, project specific metadata.
- New static functions
CheckRegistration
which checks whether all nodes in a graph/graph file are registered with the Node factory. - Fix bug where
nodes
object was not serialized if graph was empty. - Fix bug where
CacheType::Adjacent
was not setting thecacheDir
correctly.
- Fix bug where
- (Node)
- Add
usesCacheDir
std::function member which returns whether or not the Node needs a cache directory. This keeps the serialization system from creating a bunch of empty subdirectories in the graph cache (#10). - The
useCache
variable passed toserialize_
now represents the AND ofGraph::cacheEnabled and Node::usesCacheDir
. - The no argument overloads for
RegisterNode
andDeregisterNode
now support a variable number of template types so that types can be mass registered. - Fix bug where
inputPorts
andoutputPorts
objects were not serialized if Node did not have ports registered.
- Add
- (Ports)
- Define
virtual Input& operator=(Output& op)
and change theInputPort
version to an override. This enables port connections when usingNode::getInputPort(std::string)
.
- Define
- (Graphviz)
- Adds
GraphStyle::setRank*()
member functions for assigning nodes to a particular rank. This enables some control over relative node placement as described in the Graphviz documentation. - Move template function implementations to
GraphvizImpl.hpp
. - Fix bug where the number of cols used by input/output ports would sometimes be calculated incorrectly (#13).
- Adds
- (TestLib)
- Use
[this]
instead of[=]
for lambda captures. - Remove unnecessary calls to base constructor.
- Use