Releases: educelab/smgl
Releases · educelab/smgl
Patch Release v0.10.1
- Fixes compilation on GCC 13
- Modernizes code base with trailing return types
Full Changelog: v0.10.0...v0.10.1
Version 0.10.0
- Updated JSON dependency v3.11.2 [!11]
- Fix intermittent timing error with port updates, add debug logging [!12]
Full Changelog: v0.9.1...v0.10.0
Version 0.9.1
Rename the repository and update all name references.
Version 0.9
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
Version 0.8
This release implements a few new API features and tweaks in response to usage in other projects.
InputPort
Added new assignment operators to make code a bit more readable.
foo.input = 4; // equivalent to input.post(4, false)
foo.input = bar.output; // equivalent to smgl::connect(bar.output, foo.input)
Graphviz
Added Graphviz node styling support. See the documentation for smgl::GraphStyle
for more information.
// Setup graph
Graph graph;
auto a = graph.insertNode<IntNode>();
auto b = graph.insertNode<IntNode>();
auto c = graph.insertNode<FloatNode>();
// Global style
GraphStyle style;
style.defaultStyle().base.bgcolor = "red";
// Class-specific style
auto className = NodeName(a);
style.nodeClassStyle(className).base.bgcolor = "white";
// Instance-specific style
style.nodeInstanceStyle(a).base.bgcolor = "blue";
style.nodeInstanceStyle(a).font.color = "white";
// Write the graph
WriteDotFile("StyledGraph.gv", graph, style);
Result:
Version 0.7
- Adds basic graph visualization through Graphviz dot files
- Improves graph caching behavior during
Graph::update
- Adds
.zenodo.json
for automatic release tracking - Add CONTRIBUTING.md
- General cleanup
Version 0.6
Basic release as compiled library. Interface is subject to change.