|
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 > | |
| T & | get_unchecked () & |
| Return a reference to the underlying T, without checking. | |
| template<typename T > | |
| const T & | get_unchecked () const & |
| Return an immutable reference to the underlying T, without checking. | |
| template<typename 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.
|
friend |
Test equality of two types.