Viam C++ SDK current
|
Type-erased value for storing google::protobuf::Value types. A ProtoValue can be nullptr, bool, int, double, std::string, or, recursively, a vector or string-map of ProtoValue. This type is used at API/ABI boundaries for interfacing with grpc/proto code. More...
#include <proto_value.hpp>
Public Types | |
enum | Kind { k_null = 0 , k_bool = 1 , k_double = 2 , k_string = 3 , k_list = 4 , k_struct = 5 } |
Type discriminator constants for possible values stored in a ProtoValue. | |
Public Member Functions | |
ProtoValue () noexcept | |
Construct a null object. | |
ProtoValue (ProtoValue &&other) noexcept(proto_value_details::all_moves_noexcept{}) | |
Move construct this from other, leaving other in its unspecified-but-valid moved from state. | |
ProtoValue (const ProtoValue &other) | |
ProtoValue & | operator= (ProtoValue &&other) noexcept(proto_value_details::all_moves_noexcept{}) |
Move assignment from other, leaving other in its unspecified-but-valid moved from state. | |
ProtoValue & | operator= (const ProtoValue &other) |
void | swap (ProtoValue &other) noexcept(proto_value_details::all_moves_noexcept{}) |
template<typename T > | |
T const * | get () const |
Value constructors. | |
Constructors which initialize a ProtoValue holding its argument. | |
ProtoValue (std::nullptr_t) noexcept | |
ProtoValue (bool b) noexcept | |
ProtoValue (int i) noexcept | |
Construct a double object upcast from constructor argument. | |
ProtoValue (double d) noexcept | |
ProtoValue (std::string s) noexcept | |
ProtoValue (const char *str) | |
Deduction helper constructor for string from string literal. | |
template<typename Val = ProtoValue, typename = std::enable_if_t<std::is_same<Val, ProtoValue>{}>> | |
ProtoValue (std::vector< Val >) noexcept(std::is_nothrow_move_constructible< std::vector< Val > >{}) | |
Construct from a ProtoList. | |
template<typename Val = ProtoValue, typename = std::enable_if_t<std::is_same<Val, ProtoValue>{}>> | |
ProtoValue (std::unordered_map< std::string, Val >) noexcept(std::is_nothrow_move_constructible< std::unordered_map< std::string, Val > >{}) | |
Construct from a ProtoStruct. | |
Value access API | |
Kind | kind () const |
Obtain enumerator constant representing the stored data type. | |
template<typename T > | |
bool | is_a () const |
Checks whether this ProtoT is an instance of type T. | |
bool | is_null () const |
Convenience version of is_a<T> to check if the value is nullptr. | |
template<typename T > | |
T * | get () |
Return a T pointer if this is_a<T>(), else return nullptr. | |
template<typename T > | |
T const * | get () const |
Return a T pointer if this is_a<T>(), else return nullptr. | |
template<typename T > | |
std::enable_if_t< std::is_scalar< T >{}, T & > | get_unchecked () |
Return a reference to the underlying T, without checking. | |
template<typename T > | |
std::enable_if_t< std::is_scalar< T >{}, T > | get_unchecked () const |
Return the underlying T by value, without checking. | |
template<typename T > | |
std::enable_if_t<!std::is_scalar< T >{}, T & > | get_unchecked () & |
Return a mutable reference to the underlying T, without checking. | |
template<typename T > | |
std::enable_if_t<!std::is_scalar< T >{}, T const & > | get_unchecked () const & |
Return an immutable reference to the underlying T, without checking. | |
template<typename T > | |
std::enable_if_t<!std::is_scalar< T >{}, T && > | get_unchecked () && |
Return an rvalue reference to the underlying T, without checking. | |
Friends | |
bool | operator== (const ProtoValue &lhs, const ProtoValue &rhs) |
Test equality of two types. | |
Type-erased value for storing google::protobuf::Value types. A ProtoValue can be nullptr, bool, int, double, std::string, or, recursively, a vector or string-map of ProtoValue. This type is used at API/ABI boundaries for interfacing with grpc/proto code.
template double & viam::sdk::ProtoValue::get_unchecked< double > | ( | ) |
Return a reference to the underlying T, without checking.
T | a bool or double |
template ProtoStruct & viam::sdk::ProtoValue::get_unchecked< ProtoStruct > | ( | ) | & |
Return a mutable reference to the underlying T, without checking.
T | a std::string, ProtoList, or ProtoStruct. |
template ProtoStruct && viam::sdk::ProtoValue::get_unchecked< ProtoStruct > | ( | ) | && |
Return an rvalue reference to the underlying T, without checking.
T | a std::string, ProtoList, or ProtoStruct. |
template double viam::sdk::ProtoValue::get_unchecked< double > | ( | ) | const |
Return the underlying T by value, without checking.
T | a bool or double. |
template ProtoStruct const & viam::sdk::ProtoValue::get_unchecked< ProtoStruct > | ( | ) | const & |
Return an immutable reference to the underlying T, without checking.
T | a std::string, ProtoList, or ProtoStruct. |
|
friend |
Test equality of two types.