Home » Blog » Nodable » Nodable v0.7

Nodable v0.7

This prototype is a node-able bidirectionnal expression editor.

C++ / OpenGL / SDL2 / ImGui

You don’t know Nodable? check this out: Nodable website

Software architecture

The software is built to be dynamically reflective. The base class Object has members called Member. They can be added, modified (data and type) or removed at runtime. A Member wraps a Variant class that can handle basic data types such as Booleans (bool), Numbers (double) or Strings (std::string).

Two Members can be linked by a Wire. A Wire is an oriented edge, so it has a source and a target Value.

The Object derived class Entity is able to attach Component on it. Component is the base class for all components. For now there are only few components :

  • View : to draw the entity on screen (derived: NodeView, WireView, ApplicationView…)
  • Operation : to perform a computation (derived: BinaryOperation, BinaryOperationAdd, …Substract, …Multiply, … Divide)
  • Container : to contain other entities.
  • DataAccess: to load/save and entity to a JSON file.

Variable class is an Entity with a single Member named « value ».

Lexer class is an Entity able to convert an expression to a graph.

Application is a class to rule them all !

This diagram may not reflect the current state of the software because it is evolving continiously.
I update the diagram less frequently.

Source code

If you’re interested by the code source, you can download it from github.com

Platform compatibility :

Windows 7+ / Linux

History

Bibliography

Laisser un commentaire