A container class for an arbitrary type T (with some restrictions).
This class inherits from AbstractValue and therefore at runtime can be passed between functions without mentioning T.
Example:
(Advanced.) User-defined classes with additional features may subclass Value, but should take care to override Clone().
T | Must be copy-constructible or cloneable. Must not be a pointer, array, nor have const, volatile, or reference qualifiers. |
#include <drake/common/value.h>
Public Member Functions | |
Value () | |
Constructs a Value<T> using T's default constructor, if available. More... | |
Value (const T &v) | |
Constructs a Value<T> by copying or cloning the given value v . More... | |
template<typename... Args> | |
Value (Args &&... args) | |
Constructs a Value<T> by forwarding the given args to T's constructor, if available. More... | |
Value (std::unique_ptr< T > v) | |
Constructs a Value<T> by copying or moving the given value v . More... | |
~Value () override=default | |
const T & | get_value () const |
Returns a const reference to the stored value. More... | |
T & | get_mutable_value () |
Returns a mutable reference to the stored value. More... | |
void | set_value (const T &v) |
Replaces the stored value with a new one. More... | |
std::unique_ptr< AbstractValue > | Clone () const override |
Returns a copy of this AbstractValue. More... | |
void | SetFrom (const AbstractValue &other) override |
Copies the value in other to this value. More... | |
const std::type_info & | type_info () const final |
Returns typeid of the contained object of type T. More... | |
const std::type_info & | static_type_info () const final |
Returns typeid(T) for this Value<T> object. More... | |
std::string | GetNiceTypeName () const |
Returns a human-readable name for the underlying type T. More... | |
virtual const std::type_info & | static_type_info () const=0 |
Returns typeid(T) for this Value<T> object. More... | |
Does not allow copy, move, or assignment | |
Value (const Value &)=delete | |
Value & | operator= (const Value &)=delete |
Value (Value &&)=delete | |
Value & | operator= (Value &&)=delete |
Public Member Functions inherited from AbstractValue | |
virtual | ~AbstractValue () |
template<typename T > | |
const T & | get_value () const |
Returns the value wrapped in this AbstractValue as a const reference. More... | |
template<typename T > | |
T & | get_mutable_value () |
Returns the value wrapped in this AbstractValue as mutable reference. More... | |
template<typename T > | |
void | set_value (const T &v) |
Sets the value wrapped in this AbstractValue. More... | |
template<typename T > | |
const T * | maybe_get_value () const |
Returns the value wrapped in this AbstractValue, if T matches the originally declared type of this AbstractValue. More... | |
template<typename T > | |
T * | maybe_get_mutable_value () |
Returns the mutable value wrapped in this AbstractValue, if T matches the originally declared type of this AbstractValue. More... | |
std::string | GetNiceTypeName () const |
Returns a human-readable name for the underlying type T. More... | |
AbstractValue (const AbstractValue &)=delete | |
AbstractValue & | operator= (const AbstractValue &)=delete |
AbstractValue (AbstractValue &&)=delete | |
AbstractValue & | operator= (AbstractValue &&)=delete |
Additional Inherited Members | |
Static Public Member Functions inherited from AbstractValue | |
static std::unique_ptr< AbstractValue > | Make () |
Constructs an AbstractValue using T's default constructor, if available. More... | |
template<typename T > | |
static std::unique_ptr< AbstractValue > | Make (const T &value) |
Returns an AbstractValue containing the given value . More... | |
Value | ( | ) |
Constructs a Value<T> using T's default constructor, if available.
This is only available for T's that support default construction.
|
explicit |
Constructs a Value<T> by copying or cloning the given value v
.
|
explicit |
Constructs a Value<T> by forwarding the given args
to T's constructor, if available.
This is only available for non-primitive T's that are constructible from args
.
|
explicit |
Constructs a Value<T> by copying or moving the given value v
.
|
overridedefault |
|
overridevirtual |
Returns a copy of this AbstractValue.
Implements AbstractValue.
T& get_mutable_value | ( | ) |
Returns a mutable reference to the stored value.
The reference remains valid only until this object is set or destroyed.
const T& get_value | ( | ) | const |
Returns a const reference to the stored value.
The reference remains valid only until this object is set or destroyed.
std::string GetNiceTypeName |
Returns a human-readable name for the underlying type T.
This may be slow but is useful for error messages. If T is polymorphic, this returns the typeid of the most-derived type of the contained object.
void set_value | ( | const T & | v | ) |
Replaces the stored value with a new one.
|
overridevirtual |
Copies the value in other
to this value.
If other is not compatible with this object, a std::logic_error will be thrown with a helpful error message.
Implements AbstractValue.
|
finalvirtual |
Returns typeid(T) for this Value<T> object.
If T is polymorphic, this does NOT reflect the typeid of the most-derived type of the contained object; the result is always the base type T.
Implements AbstractValue.
virtual const std::type_info& static_type_info |
Returns typeid(T) for this Value<T> object.
If T is polymorphic, this does NOT reflect the typeid of the most-derived type of the contained object; the result is always the base type T.
|
finalvirtual |
Returns typeid of the contained object of type T.
If T is polymorphic, this returns the typeid of the most-derived type of the contained object.
Implements AbstractValue.