An InputPort is a System resource that describes the kind of input a System accepts, on a given port.
It does not directly contain any runtime input port data; that is always contained in a Context. The actual value will be either the value of an OutputPort to which this is connected, or a fixed value set in a Context.
InputPortBase is the scalar type-independent part of an InputPort.
#include <drake/systems/framework/input_port_base.h>
Public Member Functions | |
~InputPortBase () override | |
InputPortIndex | get_index () const |
Returns the index of this input port within the owning System. More... | |
bool | is_random () const |
Returns true if this is a random port. More... | |
std::optional< RandomDistribution > | get_random_type () const |
Returns the RandomDistribution if this is a random port. More... | |
std::unique_ptr< AbstractValue > | Allocate () const |
Allocates a concrete object suitable for holding the value to be provided by this input port, and returns that as an AbstractValue. More... | |
const std::string & | get_name () const |
Get port name. More... | |
std::string | GetFullDescription () const |
Returns a verbose human-readable description of port. More... | |
PortDataType | get_data_type () const |
Returns the port data type. More... | |
int | size () const |
Returns the fixed size expected for a vector-valued port. More... | |
DependencyTicket | ticket () const |
(Advanced.) Returns the DependencyTicket for this port within the owning System. More... | |
Does not allow copy, move, or assignment | |
InputPortBase (const InputPortBase &)=delete | |
InputPortBase & | operator= (const InputPortBase &)=delete |
InputPortBase (InputPortBase &&)=delete | |
InputPortBase & | operator= (InputPortBase &&)=delete |
Public Member Functions inherited from PortBase | |
virtual | ~PortBase () |
const std::string & | get_name () const |
Get port name. More... | |
std::string | GetFullDescription () const |
Returns a verbose human-readable description of port. More... | |
PortDataType | get_data_type () const |
Returns the port data type. More... | |
int | size () const |
Returns the fixed size expected for a vector-valued port. More... | |
const std::optional< std::string > & | get_deprecation () const |
When this port is deprecated, returns non-null with a (possibly empty) deprecation message; when this port is not deprecated, returns null. More... | |
void | set_deprecation (std::optional< std::string > deprecation) |
Sets whether this port is deprecated (and if so, the message). More... | |
DependencyTicket | ticket () const |
(Advanced.) Returns the DependencyTicket for this port within the owning System. More... | |
PortBase (const PortBase &)=delete | |
PortBase & | operator= (const PortBase &)=delete |
PortBase (PortBase &&)=delete | |
PortBase & | operator= (PortBase &&)=delete |
Protected Types | |
using | EvalAbstractCallback = std::function< const AbstractValue *(const ContextBase &)> |
Signature of a function suitable for returning the cached value of a particular input port. More... | |
Protected Member Functions | |
InputPortBase (internal::SystemMessageInterface *owning_system, internal::SystemId owning_system_id, std::string name, InputPortIndex index, DependencyTicket ticket, PortDataType data_type, int size, const std::optional< RandomDistribution > &random_type, EvalAbstractCallback eval, ValueProducer::AllocateCallback alloc) | |
(Internal use only) Provides derived classes the ability to set the base class members at construction. More... | |
const AbstractValue & | DoEvalRequired (const ContextBase &context) const |
Evaluate this port; throws an exception if the port is not connected. More... | |
const AbstractValue * | DoEvalOptional (const ContextBase &context) const |
Evaluate this port; returns nullptr if the port is not connected. More... | |
void | ThrowRequiredMissing () const |
Throws an exception that this port is not connected, but was expected to be connected (i.e., an Eval caller expected that it was always connected). More... | |
Protected Member Functions inherited from PortBase | |
PortBase (const char *kind_string, internal::SystemMessageInterface *owning_system, internal::SystemId owning_system_id, std::string name, int index, DependencyTicket ticket, PortDataType data_type, int size) | |
Provides derived classes the ability to set the base class members at construction. More... | |
int | get_int_index () const |
Returns the index of this port within the owning System (i.e., an InputPortIndex or OutputPortIndex, but as a bare integer). More... | |
const internal::SystemMessageInterface & | get_system_interface () const |
Returns a reference to the system that owns this port. More... | |
internal::SystemMessageInterface & | get_mutable_system_interface () |
Returns get_system_interface(), but without the const. More... | |
void | ValidateSystemId (internal::SystemId id) const |
(Internal use only) Checks whether the given id (nominally obtained from a Context passed to this port) was created for the system that owns this port. More... | |
void | ThrowValidateContextMismatch () const |
(Internal use only) Throws std::exception with a message that the sanity check(s) related to ValidateContext have failed. More... | |
template<typename ValueType > | |
const ValueType & | PortEvalCast (const AbstractValue &abstract) const |
Pull a value of a given type from an abstract value or issue a nice message if the type is not correct. More... | |
template<typename ValueType , typename T > | |
const ValueType & | PortEvalCast (const BasicVector< T > &basic) const |
Downcast a basic vector to a more specific subclass, or else issue a nice message if the type is not correct. More... | |
template<typename ValueType > | |
const ValueType & | ThrowBadCast (const AbstractValue &abstract) const |
Reports that the user provided a bad ValueType argument to Eval. More... | |
template<typename ValueType , typename T > | |
const ValueType & | ThrowBadCast (const BasicVector< T > &basic) const |
Reports that the user provided a bad ValueType argument to Eval. More... | |
void | ThrowBadCast (const std::string &value_typename, const std::string &eval_typename) const |
Reports that the user provided a bad ValueType argument to Eval. More... | |
|
protected |
Signature of a function suitable for returning the cached value of a particular input port.
Will return nullptr if the port is not connected.
|
delete |
|
delete |
|
override |
|
protected |
(Internal use only) Provides derived classes the ability to set the base class members at construction.
owning_system | The System that owns this input port. |
owning_system_id | The ID of owning_system. |
name | A name for the port. Input port names should be non-empty and unique within a single System. |
index | The index to be assigned to this InputPort. |
ticket | The DependencyTicket to be assigned to this InputPort. |
data_type | Whether the port described is vector- or abstract-valued. |
size | If the port described is vector-valued, the number of elements. Ignored for abstract-valued ports. |
random_type | Input ports may optionally be labeled as random, if the port is intended to model a random-source "noise" or "disturbance" input. |
std::unique_ptr<AbstractValue> Allocate | ( | ) | const |
Allocates a concrete object suitable for holding the value to be provided by this input port, and returns that as an AbstractValue.
The returned object will never be null.
|
protected |
Evaluate this port; returns nullptr if the port is not connected.
|
protected |
Evaluate this port; throws an exception if the port is not connected.
PortDataType get_data_type |
Returns the port data type.
InputPortIndex get_index | ( | ) | const |
Returns the index of this input port within the owning System.
For a Diagram, this will be the index within the Diagram, not the index within a LeafSystem whose input port was exported.
const std::string& get_name |
Get port name.
std::optional<RandomDistribution> get_random_type | ( | ) | const |
Returns the RandomDistribution if this is a random port.
std::string GetFullDescription |
Returns a verbose human-readable description of port.
This is useful for error messages or debugging.
bool is_random | ( | ) | const |
Returns true if this is a random port.
|
delete |
|
delete |
int size |
Returns the fixed size expected for a vector-valued port.
Not meaningful for abstract-valued ports.
|
protected |
Throws an exception that this port is not connected, but was expected to be connected (i.e., an Eval caller expected that it was always connected).
DependencyTicket ticket |
(Advanced.) Returns the DependencyTicket for this port within the owning System.