NAME
Build::Hopen::G - Namespace for graph-related items in hopen
SYNOPSIS
Everything graph-related in hopen lives under Build::Hopen::G
. This includes nodes, edges, and graphs (specifically, directed acyclic graphs, DAGs).
Classes are (all under Build::Hopen::G
):
Entity - something in the graph
Link - connection between Nodes
Node - abstract graph node
Op - abstract operation
Goal - a node that just gives a name to a set of operations
PassthroughOp - no-op concrete operation
DAG - the graph
ELEMENTS
Build::Hopen::G::Op
An operation. Operations should, generally speaking, invoke a generator routine (Build::Hopen::Gen) based on their inputs. Operations should output values representing the generator action they took.
TODO Should operations pass through all inputs they don't use or transform? I am inclined to think they should, but this needs testing.
Build::Hopen::G::Link
A connection between operations. Edges should, generally speaking, not invoke generator routines. Instead, they should transform their inputs to outputs, possibly with reference to the environment or (if necessary) the identity (but not details) of the generator in use.
Build::Hopen::G::DAG
A graph of operations and edges. Every relationship between operations and edges is expressed in a DAG. A DAG has zero or more goals (Build::Hopen::G::Goal) that represent named activities expressed in the DAG.