Cerata
A library to generate structural hardware designs
cerata::Parameter Class Reference

A Parameter node. More...

#include <parameter.h>

+ Inheritance diagram for cerata::Parameter:
+ Collaboration diagram for cerata::Parameter:

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< ObjectCopy () const override
 Create a copy of this Parameter.
 
Nodevalue () const
 Return the value node.
 
ParameterSetValue (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.
 
Literaldefault_value ()
 Return the default value node.
 
- Public Member Functions inherited from cerata::NormalNode
 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.
 
- Public Member Functions inherited from cerata::MultiOutputNode
 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< Edgeoutput (size_t i) const
 Return output edge i of this node.
 
size_t num_outputs () const
 Return the number of edges of this node.
 
- Public Member Functions inherited from cerata::Node
 Node (std::string name, NodeID id, std::shared_ptr< Type > type)
 Node constructor.
 
Typetype () const
 Return the node Type.
 
NodeSetType (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.
 
NodeReplace (Node *replacement)
 Replace some node with another node, reconnecting all original edges. Returns the replaced node.
 
virtual NodeCopyOnto (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.
 
- Public Member Functions inherited from cerata::Object
 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.
 
- Public Member Functions inherited from cerata::Named
 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< Literaldefault_value_
 Parameter value.
 
- Public Attributes inherited from cerata::NormalNode
std::shared_ptr< Edgeinput_
 The incoming Edge that sources this Node.
 
- Public Attributes inherited from cerata::MultiOutputNode
std::vector< std::shared_ptr< Edge > > outputs_
 The outgoing Edges that sink this Node.
 
- Public Attributes inherited from cerata::Object
std::unordered_map< std::string, std::string > meta
 KV storage for metadata of tools or specific backend implementations.
 

Additional Inherited Members

- Public Types inherited from cerata::Node
enum  NodeID {
  NodeID::PORT, NodeID::SIGNAL, NodeID::PARAMETER, NodeID::LITERAL,
  NodeID::EXPRESSION
}
 Node type IDs with different properties. More...
 
- Public Types inherited from cerata::Object
enum  ID { NODE, ARRAY }
 Object type ID to conveniently cast the object during run-time. More...
 
- Protected Attributes inherited from cerata::Node
NodeID node_id_
 Node type ID.
 
std::shared_ptr< Typetype_
 The Type of this Node.
 
std::optional< NodeArray * > array_ = {}
 Parent if this belongs to an array.
 
- Protected Attributes inherited from cerata::Object
ID obj_id_
 The object type ID.
 
std::optional< Graph * > parent_ = {}
 An optional parent Graph to which this Object belongs. Initially no value.
 

Detailed Description

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.


The documentation for this class was generated from the following files: