Struct NodeScalar
Synopsis
#include <src/c4/yml/tree.hpp>
struct NodeScalar
Description
a node scalar is a csubstr, which may be tagged and anchored.
Summary
NodeScalar overload | initialize as an empty scalar | |
NodeScalar overload | initialize as an untagged scalar | |
NodeScalar overload | initialize as a tagged scalar | |
~NodeScalar | ||
operator= overload | ||
empty | ||
clear | ||
set_ref_maybe_replacing_scalar |
Source
Lines 286-328 in src/c4/yml/tree.hpp.
struct NodeScalar
{
csubstr tag;
csubstr scalar;
csubstr anchor;
public:
/// initialize as an empty scalar
inline NodeScalar() noexcept : tag(), scalar(), anchor() {}
/// initialize as an untagged scalar
template<size_t N>
inline NodeScalar(const char (&s)[N]) noexcept : tag(), scalar(s), anchor() {}
inline NodeScalar(csubstr s ) noexcept : tag(), scalar(s), anchor() {}
/// initialize as a tagged scalar
template<size_t N, size_t M>
inline NodeScalar(const char (&t)[N], const char (&s)[N]) noexcept : tag(t), scalar(s), anchor() {}
inline NodeScalar(csubstr t , csubstr s ) noexcept : tag(t), scalar(s), anchor() {}
public:
~NodeScalar() noexcept = default;
NodeScalar(NodeScalar &&) noexcept = default;
NodeScalar(NodeScalar const&) noexcept = default;
NodeScalar& operator= (NodeScalar &&) noexcept = default;
NodeScalar& operator= (NodeScalar const&) noexcept = default;
public:
bool empty() const noexcept { return tag.empty() && scalar.empty() && anchor.empty(); }
void clear() noexcept { tag.clear(); scalar.clear(); anchor.clear(); }
void set_ref_maybe_replacing_scalar(csubstr ref, bool has_scalar) noexcept
{
csubstr trimmed = ref.begins_with('*') ? ref.sub(1) : ref;
anchor = trimmed;
if((!has_scalar) || !scalar.ends_with(trimmed))
scalar = ref;
}
};