maliput
PortBase Class Reference

Detailed Description

A PortBase is base class for System ports; users will typically use the InputPort<T> or OutputPort<T> types, not this base class.

#include <src/maliput/drake/systems/framework/port_base.h>

Inheritance diagram for PortBase:
[legend]

Public Member Functions

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 internal::SystemMessageInterfaceget_system_interface () const
 
DependencyTicket ticket () const
 (Advanced.) Returns the DependencyTicket for this port within the owning System. More...
 

Protected Member Functions

 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...
 
internal::SystemMessageInterfaceget_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 (e.g., as generated by //tools/vector_gen) or 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...
 

Constructor & Destructor Documentation

◆ ~PortBase()

~PortBase ( )
virtualdefault

◆ 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 
)
protected

Provides derived classes the ability to set the base class members at construction.

Parameters
kind_stringEither "Input" or "Output", depending on the kind of subclass.
owning_systemThe System that owns this port.
owning_system_idThe ID of owning_system.
nameA name for the port. Port names should be non-empty and unique within a single System.
indexThe index to be assigned to this port. Input ports and output ports each have their own pool of indices (InputPortIndex and OutputPortIndex); this is just that TypeSafeIndex passed as a bare int.
ticketThe DependencyTicket to be assigned to this port.
data_typeWhether the port described is vector- or abstract-valued.
sizeIf the port described is vector-valued, the number of elements. Ignored for abstract-valued ports.

Member Function Documentation

◆ get_data_type()

PortDataType get_data_type ( ) const

Returns the port data type.

◆ get_int_index()

int get_int_index ( ) const
protected

Returns the index of this port within the owning System (i.e., an InputPortIndex or OutputPortIndex, but as a bare integer).

For a Diagram, this will be the index within the Diagram, not the index within the LeafSystem whose output port was forwarded.

◆ get_mutable_system_interface()

internal::SystemMessageInterface& get_mutable_system_interface ( )
protected

Returns get_system_interface(), but without the const.

◆ get_name()

const std::string& get_name ( ) const

Get port name.

◆ get_system_interface()

const internal::SystemMessageInterface& get_system_interface ( ) const

◆ GetFullDescription()

std::string GetFullDescription ( ) const

Returns a verbose human-readable description of port.

This is useful for error messages or debugging.

◆ PortEvalCast() [1/2]

const ValueType & PortEvalCast ( const AbstractValue abstract) const
protected

Pull a value of a given type from an abstract value or issue a nice message if the type is not correct.

◆ PortEvalCast() [2/2]

const ValueType & PortEvalCast ( const BasicVector< T > &  basic) const
protected

Downcast a basic vector to a more specific subclass (e.g., as generated by //tools/vector_gen) or issue a nice message if the type is not correct.

◆ size()

int size ( ) const

Returns the fixed size expected for a vector-valued port.

Not meaningful for abstract-valued ports.

◆ ThrowBadCast() [1/3]

const ValueType& ThrowBadCast ( const AbstractValue abstract) const
protected

Reports that the user provided a bad ValueType argument to Eval.

◆ ThrowBadCast() [2/3]

const ValueType& ThrowBadCast ( const BasicVector< T > &  basic) const
protected

Reports that the user provided a bad ValueType argument to Eval.

◆ ThrowBadCast() [3/3]

void ThrowBadCast ( const std::string &  value_typename,
const std::string &  eval_typename 
) const
protected

Reports that the user provided a bad ValueType argument to Eval.

The value_typename is the type of the port's current value; the eval_typename is the type the user asked for.

◆ ThrowValidateContextMismatch()

void ThrowValidateContextMismatch ( ) const
protected

(Internal use only) Throws std::exception with a message that the sanity check(s) related to ValidateContext have failed.

◆ ticket()

DependencyTicket ticket ( ) const

(Advanced.) Returns the DependencyTicket for this port within the owning System.

◆ ValidateSystemId()

void ValidateSystemId ( internal::SystemId  id) const
protected

(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.

This is similar in spirit to SystemBase::ValidateContext, but ports cannot use SystemBase.

Note
This method is sufficiently fast for performance sensitive code.

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