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

A port is a terminator node on a graph. More...

#include <port.h>

+ Inheritance diagram for cerata::Port:
+ Collaboration diagram for cerata::Port:

Public Member Functions

 Port (std::string name, std::shared_ptr< Type > type, Term::Dir dir, std::shared_ptr< ClockDomain > domain)
 Construct a new port.
 
std::shared_ptr< ObjectCopy () const override
 Deep-copy the port.
 
PortReverse ()
 Invert the direction of this port. Removes any edges.
 
std::string ToString () const override
 Return a human-readable string of this 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.
 
- 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 Member Functions inherited from cerata::Synchronous
 Synchronous (std::shared_ptr< ClockDomain > domain)
 Synchronous constructor.
 
std::shared_ptr< ClockDomaindomain () const
 Return the clock domain to which something is synchronized.
 
void SetDomain (std::shared_ptr< ClockDomain > domain)
 Set the clock domain to which something should be synchronized.
 
- Public Member Functions inherited from cerata::Term
Dir dir () const
 Return the direction of this terminator.
 
 Term (Dir dir)
 Construct a new Term.
 
bool IsInput ()
 Return true if this Term is an input, false otherwise.
 
bool IsOutput ()
 Return true if this Term is an output, false otherwise.
 

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...
 
- Public Types inherited from cerata::Term
enum  Dir { IN, OUT }
 Terminator direction.
 
- Static Public Member Functions inherited from cerata::Term
static Dir Reverse (Dir dir)
 Return the inverse of a direction.
 
static std::string str (Dir dir)
 Convert a Dir to a human-readable string.
 
- 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.
 
- 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.
 
- Protected Attributes inherited from cerata::Synchronous
std::shared_ptr< ClockDomaindomain_
 The clock domain.
 
- Protected Attributes inherited from cerata::Term
Dir dir_
 The direction of this terminator.
 

Detailed Description

A port is a terminator node on a graph.

Definition at line 57 of file port.h.


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