Skip to content

Version 0.9

Pre-release
Pre-release
Compare
Choose a tag to compare
@csparker247 csparker247 released this 25 Aug 15:32
· 20 commits to main since this 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.