BasicVector is a semantics-free wrapper around an Eigen vector that satisfies VectorBase.
Once constructed, its size is fixed.
T | The scalar type, which must be one of the default scalars. |
#include <drake/systems/framework/basic_vector.h>
Public Member Functions | |
BasicVector ()=default | |
Constructs an empty BasicVector. More... | |
BasicVector (int size) | |
Initializes with the given size using the drake::dummy_value<T>, which is NaN when T = double. More... | |
BasicVector (VectorX< T > vec) | |
Constructs a BasicVector with the specified vec data. More... | |
BasicVector (const std::initializer_list< T > &init) | |
Constructs a BasicVector whose elements are the elements of init . More... | |
int | size () const final |
Returns the number of elements in the vector. More... | |
void | set_value (const Eigen::Ref< const VectorX< T >> &value) |
Sets the vector to the given value. More... | |
const VectorX< T > & | value () const |
Returns a const reference to the contained VectorX<T> . More... | |
Eigen::VectorBlock< VectorX< T > > | get_mutable_value () |
Returns the entire vector as a mutable Eigen::VectorBlock, which allows mutation of the values, but does not allow resize() to be invoked on the returned object. More... | |
void | SetFromVector (const Eigen::Ref< const VectorX< T >> &value) final |
Replaces the entire vector with the contents of value . More... | |
VectorX< T > | CopyToVector () const final |
Copies this entire VectorBase into a contiguous Eigen Vector. More... | |
void | ScaleAndAddToVector (const T &scale, EigenPtr< VectorX< T >> vec) const final |
Adds a scaled version of this vector to Eigen vector vec . More... | |
void | SetZero () final |
Sets all elements of this vector to zero. More... | |
std::unique_ptr< BasicVector< T > > | Clone () const |
Copies the entire vector to a new BasicVector, with the same concrete implementation type. More... | |
Eigen::VectorBlock< const VectorX< T > > | get_value () const |
(Don't use this in new code) Returns the entire vector as a const Eigen::VectorBlock. More... | |
Does not allow copy, move, or assignment | |
BasicVector (const BasicVector &)=delete | |
BasicVector & | operator= (const BasicVector &)=delete |
BasicVector (BasicVector &&)=delete | |
BasicVector & | operator= (BasicVector &&)=delete |
Public Member Functions inherited from VectorBase< T > | |
virtual | ~VectorBase () |
T & | operator[] (int index) |
Returns the element at the given index in the vector. More... | |
const T & | operator[] (int index) const |
Returns the element at the given index in the vector. More... | |
const T & | GetAtIndex (int index) const |
Returns the element at the given index in the vector. More... | |
T & | GetAtIndex (int index) |
Returns the element at the given index in the vector. More... | |
void | SetAtIndex (int index, const T &value) |
Replaces the state at the given index with the value. More... | |
virtual void | SetFrom (const VectorBase< T > &value) |
Replaces the entire vector with the contents of value . More... | |
virtual void | CopyToPreSizedVector (EigenPtr< VectorX< T >> vec) const |
Copies this entire VectorBase into a pre-sized Eigen Vector. More... | |
VectorBase & | PlusEqScaled (const T &scale, const VectorBase< T > &rhs) |
Add in scaled vector rhs to this vector. More... | |
VectorBase & | PlusEqScaled (const std::initializer_list< std::pair< T, const VectorBase< T > & >> &rhs_scale) |
Add in multiple scaled vectors to this vector. More... | |
VectorBase & | operator+= (const VectorBase< T > &rhs) |
Add in vector rhs to this vector. More... | |
VectorBase & | operator-= (const VectorBase< T > &rhs) |
Subtract in vector rhs to this vector. More... | |
virtual void | GetElementBounds (Eigen::VectorXd *lower, Eigen::VectorXd *upper) const |
Get the bounds for the elements. More... | |
VectorBase (const VectorBase &)=delete | |
VectorBase & | operator= (const VectorBase &)=delete |
VectorBase (VectorBase &&)=delete | |
VectorBase & | operator= (VectorBase &&)=delete |
Static Public Member Functions | |
static std::unique_ptr< BasicVector< T > > | Make (const std::initializer_list< T > &init) |
Constructs a BasicVector whose elements are the elements of init . More... | |
template<typename... Fargs> | |
static std::unique_ptr< BasicVector< T > > | Make (Fargs &&... args) |
Constructs a BasicVector where each element is constructed using the placewise-corresponding member of args as the sole constructor argument. More... | |
Protected Member Functions | |
const T & | DoGetAtIndexUnchecked (int index) const final |
Implementations should ensure this operation is O(1) and allocates no memory. More... | |
T & | DoGetAtIndexUnchecked (int index) final |
Implementations should ensure this operation is O(1) and allocates no memory. More... | |
const T & | DoGetAtIndexChecked (int index) const final |
Implementations should ensure this operation is O(1) and allocates no memory. More... | |
T & | DoGetAtIndexChecked (int index) final |
Implementations should ensure this operation is O(1) and allocates no memory. More... | |
virtual BasicVector< T > * | DoClone () const |
Returns a new BasicVector containing a copy of the entire vector. More... | |
const VectorX< T > & | values () const |
Provides const access to the element storage. More... | |
VectorX< T > & | values () |
(Advanced) Provides mutable access to the element storage. More... | |
Protected Member Functions inherited from VectorBase< T > | |
VectorBase () | |
void | ThrowOutOfRange (int index) const |
void | ThrowMismatchedSize (int other_size) const |
Static Protected Member Functions | |
template<typename F , typename... Fargs> | |
static void | MakeRecursive (BasicVector< T > *data, int index, F constructor_arg, Fargs &&... recursive_args) |
Sets data at index to an object of type T, which must have a single-argument constructor invoked via constructor_arg , and then recursively invokes itself on the next index with recursive args. More... | |
template<typename F , typename... Fargs> | |
static void | MakeRecursive (BasicVector< T > *data, int index, F constructor_arg) |
Base case for the MakeRecursive template recursion. More... | |
|
delete |
|
delete |
|
default |
Constructs an empty BasicVector.
|
explicit |
Initializes with the given size
using the drake::dummy_value<T>, which is NaN when T = double.
|
explicit |
Constructs a BasicVector with the specified vec
data.
BasicVector | ( | const std::initializer_list< T > & | init | ) |
Constructs a BasicVector whose elements are the elements of init
.
std::unique_ptr<BasicVector<T> > Clone | ( | ) | const |
Copies the entire vector to a new BasicVector, with the same concrete implementation type.
Uses the Non-Virtual Interface idiom because smart pointers do not have type covariance.
|
finalvirtual |
Copies this entire VectorBase into a contiguous Eigen Vector.
Implementations should ensure this operation is O(N) in the size of the value and allocates only the O(N) memory that it returns.
Reimplemented from VectorBase< T >.
|
protectedvirtual |
Returns a new BasicVector containing a copy of the entire vector.
Caller must take ownership, and may rely on the NVI wrapper to initialize the clone elementwise.
Subclasses of BasicVector must override DoClone to return their covariant type.
Reimplemented in AcrobotParams< T >, CompassGaitParams< T >, Rod2dStateVector< T >, SchunkWsgTrajectoryGeneratorStateVector< T >, CompassGaitContinuousState< T >, RimlessWheelParams< T >, BeamModelParams< T >, ClothSpringModelParams< T >, CartPoleParams< T >, AcrobotState< T >, SpongControllerParams< T >, PendulumParams< T >, RimlessWheelContinuousState< T >, BouncingBallVector< T >, PendulumState< T >, AcrobotInput< T >, and PendulumInput< T >.
|
finalprotectedvirtual |
Implementations should ensure this operation is O(1) and allocates no memory.
The index has already been checked for negative, but not size. Implementations must throw an exception when index >= size().
Implements VectorBase< T >.
|
finalprotectedvirtual |
Implementations should ensure this operation is O(1) and allocates no memory.
The index has already been checked for negative, but not size. Implementations must throw an exception when index >= size().
Implements VectorBase< T >.
|
finalprotectedvirtual |
Implementations should ensure this operation is O(1) and allocates no memory.
The index need not be validated when in release mode.
Implements VectorBase< T >.
|
finalprotectedvirtual |
Implementations should ensure this operation is O(1) and allocates no memory.
The index need not be validated when in release mode.
Implements VectorBase< T >.
Eigen::VectorBlock<VectorX<T> > get_mutable_value | ( | ) |
Returns the entire vector as a mutable Eigen::VectorBlock, which allows mutation of the values, but does not allow resize()
to be invoked on the returned object.
Eigen::VectorBlock<const VectorX<T> > get_value | ( | ) | const |
(Don't use this in new code) Returns the entire vector as a const Eigen::VectorBlock.
Prefer value()
which returns direct access to the underlying VectorX rather than wrapping it in a VectorBlock.
|
static |
Constructs a BasicVector whose elements are the elements of init
.
|
static |
Constructs a BasicVector where each element is constructed using the placewise-corresponding member of args
as the sole constructor argument.
For instance: BasicVector<symbolic::Expression>::Make("x", "y", "z");
|
staticprotected |
Sets data
at index
to an object of type T, which must have a single-argument constructor invoked via constructor_arg
, and then recursively invokes itself on the next index with recursive
args.
Helper for BasicVector<T>::Make.
|
staticprotected |
Base case for the MakeRecursive template recursion.
|
delete |
|
delete |
Adds a scaled version of this vector to Eigen vector vec
.
std::exception | if vec is the wrong size. |
Implementations should ensure this operation remains O(N) in the size of the value and allocates no memory.
Reimplemented from VectorBase< T >.
void set_value | ( | const Eigen::Ref< const VectorX< T >> & | value | ) |
Sets the vector to the given value.
After a.set_value(b.get_value()), a must be identical to b.
std::exception | if the new value has different dimensions. |
|
finalvirtual |
Replaces the entire vector with the contents of value
.
std::exception | if value is not a column vector with size() rows. |
Implementations should ensure this operation is O(N) in the size of the value and allocates no memory.
Reimplemented from VectorBase< T >.
|
finalvirtual |
Sets all elements of this vector to zero.
Reimplemented from VectorBase< T >.
|
finalvirtual |
Returns the number of elements in the vector.
Implementations should ensure this operation is O(1) and allocates no memory.
Implements VectorBase< T >.
const VectorX<T>& value | ( | ) | const |
Returns a const reference to the contained VectorX<T>
.
This is the preferred method for examining a BasicVector's value.
|
protected |
Provides const access to the element storage.
Prefer the synonymous public value()
method – this protected method remains for backwards compatibility in derived classes.
|
protected |
(Advanced) Provides mutable access to the element storage.
Be careful not to resize the storage unless you really know what you're doing.