Skip to content

Releases: educelab/smgl

Patch Release v0.10.1

07 Feb 17:42
Compare
Choose a tag to compare
  • Fixes compilation on GCC 13
  • Modernizes code base with trailing return types

Full Changelog: v0.10.0...v0.10.1

Version 0.10.0

11 Nov 20:22
Compare
Choose a tag to compare
  • 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

19 Jan 20:07
Compare
Choose a tag to compare

Rename the repository and update all name references.

Version 0.9

25 Aug 15:32
Compare
Choose a tag to compare
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.
  • (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 the cacheDir correctly.
  • (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 to serialize_ now represents the AND of Graph::cacheEnabled and Node::usesCacheDir.
    • The no argument overloads for RegisterNode and DeregisterNode now support a variable number of template types so that types can be mass registered.
    • Fix bug where inputPorts and outputPorts objects were not serialized if Node did not have ports registered.
  • (Ports)
    • Define virtual Input& operator=(Output& op) and change the InputPort version to an override. This enables port connections when using Node::getInputPort(std::string).
  • (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).
  • (TestLib)
    • Use [this] instead of [=] for lambda captures.
    • Remove unnecessary calls to base constructor.

Version 0.8

24 Jun 20:05
Compare
Choose a tag to compare
Version 0.8 Pre-release
Pre-release

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:

graphviz-styled

Version 0.7

30 Nov 15:54
Compare
Choose a tag to compare
Version 0.7 Pre-release
Pre-release
  • 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

26 Oct 17:22
Compare
Choose a tag to compare
Version 0.6 Pre-release
Pre-release

Basic release as compiled library. Interface is subject to change.