Cerata
A library to generate structural hardware designs
|
#include <parameter.h>
Public Member Functions | |
Parameter (std::string name, const std::shared_ptr< Type > &type, std::shared_ptr< Literal > default_value) | |
Construct a new Parameter, optionally defining a default value Literal. | |
std::shared_ptr< Object > | Copy () const override |
Create a copy of this Parameter. | |
Node * | value () const |
Return the value node. | |
Parameter * | SetValue (const std::shared_ptr< Node > &value) |
Set the value of the parameter node. Can only be expression, parameter, or literal. | |
void | TraceValue (std::vector< Node * > *trace) |
Append this node and nodes that source this node's value, until an expression or literal is encountered. | |
Literal * | default_value () |
Return the default value node. | |
![]() | |
NormalNode (std::string name, Node::NodeID id, std::shared_ptr< Type > type) | |
NormalNode constructor. | |
std::vector< Edge * > | sources () const override |
Return the incoming edges (in this case just the single input edge). | |
std::optional< Edge * > | input () const |
Return the single incoming edge. | |
bool | AddEdge (const std::shared_ptr< Edge > &edge) override |
Add an edge to this node. | |
bool | RemoveEdge (Edge *edge) override |
Remove an edge from this node. | |
![]() | |
MultiOutputNode (std::string name, Node::NodeID id, std::shared_ptr< Type > type) | |
MultiOutputNode constructor. | |
std::vector< Edge * > | sinks () const override |
The outgoing Edges that this Node sinks. | |
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. | |
![]() | |
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::optional< NodeArray * > | node_array_parent |
If this parametrizes a node array, this stores a pointer to the NodeArray. | |
std::shared_ptr< Literal > | default_value_ |
Parameter value. | |
![]() | |
std::shared_ptr< Edge > | input_ |
The incoming Edge that sources this Node. | |
![]() | |
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. | |
A Parameter node.
Can be used as a type generic node or as input to signal or port nodes.
Definition at line 29 of file parameter.h.