Cerata
A library to generate structural hardware designs
|
A no-input, multiple-outputs node. More...
#include <node.h>
Public Member Functions | |
MultiOutputNode (std::string name, Node::NodeID id, std::shared_ptr< Type > type) | |
MultiOutputNode constructor. | |
std::vector< Edge * > | sources () const override |
Return the incoming edges (in this case just the single input edge) that sources this Node. | |
std::vector< Edge * > | sinks () const override |
The outgoing Edges that this Node sinks. | |
bool | RemoveEdge (Edge *edge) override |
Remove an edge from this node. | |
bool | AddEdge (const std::shared_ptr< Edge > &edge) override |
Add an output edge to this node. | |
std::shared_ptr< Edge > | output (size_t i) const |
Return output edge i of this node. | |
size_t | num_outputs () const |
Return the number of edges of this node. | |
![]() | |
Node (std::string name, NodeID id, std::shared_ptr< Type > type) | |
Node constructor. | |
Type * | type () const |
Return the node Type. | |
Node * | SetType (const std::shared_ptr< Type > &type) |
Set the node Type. | |
NodeID | node_id () const |
Return the node type ID. | |
bool | Is (NodeID node_id) const |
Return whether this node is of a specific node type id. | |
virtual std::vector< Edge * > | edges () const |
Return all edges this Node is on. | |
void | SetArray (NodeArray *array) |
Set parent array. | |
std::optional< NodeArray * > | array () const |
Return parent array, if any. | |
Node * | Replace (Node *replacement) |
Replace some node with another node, reconnecting all original edges. Returns the replaced node. | |
virtual Node * | CopyOnto (Graph *dst, const std::string &name, NodeMap *rebinding) const |
Copy node onto a graph, implicitly copying over and rebinding e.g. type generics of referenced nodes. More... | |
void | AppendReferences (std::vector< Object * > *out) const override |
Return all objects referenced by this node. For default nodes, these are type generics only. | |
virtual std::string | ToString () const |
Return a human-readable string of this node. | |
![]() | |
Object (std::string name, ID id) | |
Cerata object constructor. More... | |
ID | obj_id () const |
Return the object ID of this object. | |
bool | IsNode () const |
Return true if this object is a node. | |
bool | IsArray () const |
Return true if this object is an array. | |
virtual void | SetParent (Graph *parent) |
Set the parent graph of this object. | |
virtual std::optional< Graph * > | parent () const |
Return the parent graph of this object, if any. Returns empty option otherwise. | |
virtual std::shared_ptr< Object > | Copy () const =0 |
Deep-copy the object. | |
![]() | |
Named (std::string name) | |
Named constructor. | |
std::string | name () const |
Return the name of the object. | |
void | SetName (std::string name) |
Change the name of the object. | |
virtual | ~Named ()=default |
Destructor. | |
Public Attributes | |
std::vector< std::shared_ptr< Edge > > | outputs_ |
The outgoing Edges that sink this Node. | |
![]() | |
std::unordered_map< std::string, std::string > | meta |
KV storage for metadata of tools or specific backend implementations. | |
Additional Inherited Members | |
![]() | |
enum | NodeID { NodeID::PORT, NodeID::SIGNAL, NodeID::PARAMETER, NodeID::LITERAL, NodeID::EXPRESSION } |
Node type IDs with different properties. More... | |
![]() | |
enum | ID { NODE, ARRAY } |
Object type ID to conveniently cast the object during run-time. More... | |
![]() | |
NodeID | node_id_ |
Node type ID. | |
std::shared_ptr< Type > | type_ |
The Type of this Node. | |
std::optional< NodeArray * > | array_ = {} |
Parent if this belongs to an array. | |
![]() | |
ID | obj_id_ |
The object type ID. | |
std::optional< Graph * > | parent_ = {} |
An optional parent Graph to which this Object belongs. Initially no value. | |