How does "removeView" Node from the .hpp works? Form what i've seen, it removes the GraphView from the Node, but not the Node from the GraphView. The assymetry of information seem problematic
getNodeDelta: does it only takes the Delta layer or all the layers between the Delta and the Node?
Why is Node's addParent private and not public? How do we add parents in our Node?
parentIsBackEdge: give the def of back edge with a little drawing because i like drawings
Hook class was removed but Hook mecanism is still present and used with the addBeforeForward, addAfterForward (same for Backward) methods.
A Hook is a function that is called on top of the forward/backward.
We decided to implement the hook system by creating a stack of functions to call instead of adding a Hook class (which was the first design we experimented).
Olivier made so that Hook returns a boolean to know if they should still be used or not.
Another thing that I may mention, hooks should not be used to modify the values of the input/output. We cannot enforce it by design but it is not the role of the hook functions. They should only be "watcher".
I don't see the use of void addChild(std::shared_ptr otherView,
const IOIndex_t outId = IOIndex_t(0),
std::pair<NodePtr, IOIndex_t> otherInId =
std::pair<NodePtr, IOIndex_t>(nullptr, gk_IODefaultIndex));
Either you take the N-th input of the graph or you take directly a Node but here, we take a node from the graph, we check if it's an input and so on, seems overkill
I feel like we're risking some data overlapping here: if you give the Node to connect it as an input, you don't need the graph (as in some other addchild) while if you give the graph, no need to furthermore tell it's that node (if you had the node, use the other addchild) but just the graph's input index would suffice.
Asking for both the graph and the Node require extra precautions as we need to check that the Node is indeed an input Node of the and so on
We should sort which functions are to be used directly and which should only be used in other functions (otherwise uninformed ussers will inadvertently break their model