#include <userver/formats/yaml/value.hpp>
Non-mutable YAML value representation.
Class provides non mutable access YAML value. For modification and construction of new YAML values use formats::yaml::ValueBuilder.
Classes | |
struct | DefaultConstructed |
struct | IterTraits |
Public Member Functions | |
Value () noexcept | |
Constructs a Value that holds a Null. | |
Value (Value &&) | |
Value (const Value &) | |
Value & | operator= (Value &&) |
Value & | operator= (const Value &) |
template<class T > | |
Value & | operator= (T &&) && |
Value (Value &&other, std::string path_prefix) | |
Copies other , appending path_prefix to the stored path | |
Value | operator[] (std::string_view key) const |
Access member by key for read. | |
Value | operator[] (std::size_t index) const |
Access array member by index for read. | |
const_iterator | begin () const |
Returns an iterator to the beginning of the held array or map. | |
const_iterator | end () const |
Returns an iterator to the end of the held array or map. | |
bool | IsEmpty () const |
Returns whether the array or object is empty. | |
std::size_t | GetSize () const |
Returns array size or object members count. | |
bool | operator== (const Value &other) const |
Compares values. | |
bool | operator!= (const Value &other) const |
bool | IsMissing () const |
Returns true if *this holds nothing. When IsMissing() returns true any attempt to get the actual value or iterate over *this will throw MemberMissingException. | |
bool | IsNull () const noexcept |
Returns true if *this holds a Null (Type::kNull). | |
bool | IsBool () const noexcept |
Returns true if *this is convertible to bool. | |
bool | IsInt () const noexcept |
Returns true if *this is convertible to int. | |
bool | IsInt64 () const noexcept |
Returns true if *this is convertible to int64_t. | |
bool | IsUInt64 () const noexcept |
Returns true if *this is convertible to uint64_t. | |
bool | IsDouble () const noexcept |
Returns true if *this is convertible to double. | |
bool | IsString () const noexcept |
Returns true if *this is convertible to std::string. | |
bool | IsArray () const noexcept |
Returns true if *this is an array (Type::kArray). | |
bool | IsObject () const noexcept |
Returns true if *this is a map (Type::kObject). | |
template<typename T > | |
auto | As () const |
Returns value of *this converted to the result type of Parse(const Value&, parse::To<T>). Almost always it is T. | |
template<typename T , typename First , typename... Rest> | |
auto | As (First &&default_arg, Rest &&... more_default_args) const |
Returns value of *this converted to T or T(args) if this->IsMissing(). | |
template<typename T > | |
auto | As (DefaultConstructed) const |
Returns value of *this converted to T or T() if this->IsMissing(). | |
bool | HasMember (std::string_view key) const |
Returns true if *this holds a key . | |
std::string | GetPath () const |
Returns full path to this value. | |
int | GetColumn () const |
Returns 0-based column number of this Value in the original document. Returns -1 if this->IsMissing() . If Value was created using formats::yaml::ValueBuilder, returns 0 . | |
int | GetLine () const |
Returns 0-based line number of this Value in the original document. Returns -1 if this->IsMissing() . If Value was created using formats::yaml::ValueBuilder, returns 0 . | |
std::string_view | GetTag () const |
Returns YAML tag of this node. If tag is not explicitly specified, its value depends on node value. For explicitly specified tags, its value depends on used TAG directives and node value. There is an implicit TAG derictive for !! with prefix tag:yaml.org,2002: . | |
Value | Clone () const |
Returns new value that is an exact copy if the existing one but references different memory (a deep copy of a *this). The returned value is a root value with path '/'. | |
void | CheckNotMissing () const |
void | CheckArray () const |
void | CheckArrayOrNull () const |
void | CheckObjectOrNull () const |
void | CheckObject () const |
void | CheckString () const |
void | CheckObjectOrArrayOrNull () const |
void | CheckInBounds (std::size_t index) const |
bool | IsRoot () const noexcept |
Returns true if *this is a first (root) value. | |
bool | DebugIsReferencingSameMemory (const Value &other) const |
Returns true if *this and other reference the value by the same pointer. | |
formats::yaml::Value::Value | ( | Value && | other, |
std::string | path_prefix ) |
Copies other
, appending path_prefix
to the stored path
other
must have an empty (root) path `std::logic_error` | if other has path other than the root path |
Returns value of *this converted to the result type of Parse(const Value&, parse::To<T>). Almost always it is T.
Anything | derived from std::exception. |
auto formats::yaml::Value::As | ( | Value::DefaultConstructed | ) | const |
Returns value of *this converted to T or T() if this->IsMissing().
Anything | derived from std::exception. |
value.As<T>({})
Returns value of *this converted to T or T(args) if this->IsMissing().
Anything | derived from std::exception. |
const_iterator formats::yaml::Value::begin | ( | ) | const |
Returns an iterator to the beginning of the held array or map.
TypeMismatchException | if not an array or an object. |
void formats::yaml::Value::CheckArray | ( | ) | const |
MemberMissingException | if *this is not an array. |
void formats::yaml::Value::CheckArrayOrNull | ( | ) | const |
MemberMissingException | if *this is not an array or Null. |
void formats::yaml::Value::CheckInBounds | ( | std::size_t | index | ) | const |
TypeMismatchException | if *this is not a map, array or Null; OutOfBoundsException if index >= this->GetSize() . |
void formats::yaml::Value::CheckNotMissing | ( | ) | const |
MemberMissingException | if this->IsMissing() . |
void formats::yaml::Value::CheckObject | ( | ) | const |
TypeMismatchException | if *this is not a map. |
void formats::yaml::Value::CheckObjectOrArrayOrNull | ( | ) | const |
TypeMismatchException | if *this is not a map, array or Null. |
void formats::yaml::Value::CheckObjectOrNull | ( | ) | const |
TypeMismatchException | if *this is not a map or Null. |
void formats::yaml::Value::CheckString | ( | ) | const |
TypeMismatchException | if *this is not convertible to std::string. |
Value formats::yaml::Value::Clone | ( | ) | const |
Returns new value that is an exact copy if the existing one but references different memory (a deep copy of a *this). The returned value is a root value with path '/'.
MemberMissingException | if this->IsMissing() . |
const_iterator formats::yaml::Value::end | ( | ) | const |
Returns an iterator to the end of the held array or map.
TypeMismatchException | if not an array or an object. |
int formats::yaml::Value::GetColumn | ( | ) | const |
Returns 0-based column number of this Value
in the original document. Returns -1
if this->IsMissing()
. If Value
was created using formats::yaml::ValueBuilder, returns 0
.
int formats::yaml::Value::GetLine | ( | ) | const |
Returns 0-based line number of this Value
in the original document. Returns -1
if this->IsMissing()
. If Value
was created using formats::yaml::ValueBuilder, returns 0
.
std::size_t formats::yaml::Value::GetSize | ( | ) | const |
Returns array size or object members count.
TypeMismatchException | if not an array or an object. |
std::string_view formats::yaml::Value::GetTag | ( | ) | const |
Returns YAML tag of this node. If tag is not explicitly specified, its value depends on node value. For explicitly specified tags, its value depends on used TAG
directives and node value. There is an implicit TAG
derictive for !!
with prefix tag:yaml.org,2002:
.
For example:
""
if field is null, even when tag is specified"!"
for quoted and block strings if tag is not specified"?"
for other fields if tag is not specified"tag:yaml.org,2002:str"
for !!str
tag"!!str"
for !<!!str>
tag"!custom_tag"
for !custom_tag
tag, if no additional TAG
directives are specifiedFor details see YAML specification.
MemberMissingException | if this->IsMissing() . |
bool formats::yaml::Value::IsEmpty | ( | ) | const |
Returns whether the array or object is empty.
TypeMismatchException | if not an array or an object. |
|
inline |
bool formats::yaml::Value::operator== | ( | const Value & | other | ) | const |
Compares values.
MemberMissingException | if *this or other is missing. |
Value formats::yaml::Value::operator[] | ( | std::size_t | index | ) | const |
Access array member by index for read.
TypeMismatchException | if not an array value. |
`OutOfBoundsException` | if index is greater or equal than size. |
Value formats::yaml::Value::operator[] | ( | std::string_view | key | ) | const |
Access member by key for read.
TypeMismatchException | if not a missing value, an object, or Null. |
|
friend |
Parse JSON from stream.
Parse JSON from stream.
|
friend |
Parse YAML from string.
Definition at line 78 of file from_string.hpp.
|
friend |