YAML 树节点句柄
更多...
#include <rmvl/core/yaml.hpp>
|
| | Node () noexcept=default |
| | 构造无效节点
|
| bool | valid () const noexcept |
| NodeType | type () const noexcept |
| bool | isNull () const noexcept |
| bool | isScalar () const noexcept |
| bool | isSequence () const noexcept |
| bool | isMap () const noexcept |
| std::size_t | size () const noexcept |
| std::string_view | key () const noexcept |
| std::string_view | scalar () const noexcept |
| std::string_view | tag () const noexcept |
| bool | contains (std::string_view name) const noexcept |
| | 判断映射是否包含指定键
|
| Node | operator[] (std::string_view name) const noexcept |
| | 查找映射子节点
|
| Node | operator[] (std::size_t index) const noexcept |
| | 获取指定位置的容器子节点
|
| std::vector< std::string_view > | keys () const |
| Node | ensure (std::string_view name) |
| | 获取或创建映射子节点
|
| Node | append () |
| | 向序列末尾添加空值节点
|
| bool | erase (std::string_view name) |
| | 删除映射子节点
|
| bool | erase (std::size_t index) |
| | 删除指定位置的容器子节点
|
| void | setNull () |
| | 将节点替换为空值
|
| void | makeMap () |
| | 将节点替换为空映射
|
| void | makeSequence () |
| | 将节点替换为空序列
|
| void | setScalar (std::string_view value) |
| | 将节点替换为标量
|
| void | setTag (std::string_view value) |
| | 设置节点标签
|
| template<typename T> |
| bool | read (T &value) const |
| | 读取并转换节点值
|
| template<typename T> |
| std::optional< T > | as () const |
| | 读取并转换节点值
|
| template<typename T> |
| T | valueOr (T fallback) const |
| | 读取节点值,失败时返回默认值
|
| template<typename T> |
| bool | write (const T &value) |
| | 写入任意受支持类型
|
| template<typename T> |
| bool | set (std::string_view name, const T &value) |
| | 设置映射字段
|
| template<typename T> |
| bool | push (const T &value) |
| | 向序列追加一个值
|
YAML 树节点句柄
- 拷贝 Node 仅复制共享所有权和节点标识,不复制 YAML 数据
- scalar()、key() 和 keys() 返回的视图会在同一棵树发生写入后失效
- 删除节点后,指向被删除节点及其后代的既有句柄不可继续使用
- 注解
- 同一棵树上的并发写入,或读写并发,需要由调用方同步。
◆ Node()
◆ append()
| Node rm::yaml::Node::append |
( |
| ) |
|
向序列末尾添加空值节点
- 返回
- 新增子节点,当前节点无效时返回无效节点
- 注解
- 当前节点不是序列时,其原有内容会被替换为空序列。
◆ as()
template<typename T>
| std::optional< T > rm::yaml::Node::as |
( |
| ) |
const |
读取并转换节点值
- 模板参数
-
- 返回
- 成功时返回目标值,否则返回 std::nullopt
◆ contains()
| bool rm::yaml::Node::contains |
( |
std::string_view | name | ) |
const |
|
noexcept |
判断映射是否包含指定键
- 参数
-
- 返回
- 是否存在对应子节点
◆ createMap()
| Node rm::yaml::Node::createMap |
( |
| ) |
|
|
static |
◆ createScalar()
| Node rm::yaml::Node::createScalar |
( |
std::string_view | value | ) |
|
|
static |
◆ createSequence()
| Node rm::yaml::Node::createSequence |
( |
| ) |
|
|
static |
◆ ensure()
| Node rm::yaml::Node::ensure |
( |
std::string_view | name | ) |
|
获取或创建映射子节点
- 参数
-
- 返回
- 对应子节点,当前节点无效时返回无效节点
- 注解
- 当前节点不是映射时,其原有内容会被替换为空映射。
◆ erase() [1/2]
| bool rm::yaml::Node::erase |
( |
std::size_t | index | ) |
|
删除指定位置的容器子节点
- 参数
-
- 返回
- 是否找到并删除节点
◆ erase() [2/2]
| bool rm::yaml::Node::erase |
( |
std::string_view | name | ) |
|
◆ isMap()
| bool rm::yaml::Node::isMap |
( |
| ) |
const |
|
inlinenoexcept |
◆ isNull()
| bool rm::yaml::Node::isNull |
( |
| ) |
const |
|
inlinenoexcept |
◆ isScalar()
| bool rm::yaml::Node::isScalar |
( |
| ) |
const |
|
inlinenoexcept |
◆ isSequence()
| bool rm::yaml::Node::isSequence |
( |
| ) |
const |
|
inlinenoexcept |
◆ key()
| std::string_view rm::yaml::Node::key |
( |
| ) |
const |
|
noexcept |
◆ keys()
| std::vector< std::string_view > rm::yaml::Node::keys |
( |
| ) |
const |
◆ makeMap()
| void rm::yaml::Node::makeMap |
( |
| ) |
|
◆ makeSequence()
| void rm::yaml::Node::makeSequence |
( |
| ) |
|
◆ operator[]() [1/2]
| Node rm::yaml::Node::operator[] |
( |
std::size_t | index | ) |
const |
|
noexcept |
获取指定位置的容器子节点
- 参数
-
- 返回
- 索引有效时返回子节点,否则返回无效节点
◆ operator[]() [2/2]
| Node rm::yaml::Node::operator[] |
( |
std::string_view | name | ) |
const |
|
noexcept |
查找映射子节点
- 参数
-
- 返回
- 找到时返回子节点,否则返回无效节点
◆ push()
template<typename T>
| bool rm::yaml::Node::push |
( |
const T & | value | ) |
|
向序列追加一个值
- 模板参数
-
- 参数
-
- 返回
- 是否写入成功
◆ read()
template<typename T>
| bool rm::yaml::Node::read |
( |
T & | value | ) |
const |
读取并转换节点值
- 模板参数
-
| T | 目标类型,支持标量、枚举、optional、vector、array、以 string 为键的 map/unordered_map 和 ADL 自定义类型 |
- 参数
-
- 返回
- 是否转换成功
◆ scalar()
| std::string_view rm::yaml::Node::scalar |
( |
| ) |
const |
|
noexcept |
◆ set()
template<typename T>
| bool rm::yaml::Node::set |
( |
std::string_view | name, |
|
|
const T & | value ) |
◆ setNull()
| void rm::yaml::Node::setNull |
( |
| ) |
|
◆ setScalar()
| void rm::yaml::Node::setScalar |
( |
std::string_view | value | ) |
|
◆ setTag()
| void rm::yaml::Node::setTag |
( |
std::string_view | value | ) |
|
设置节点标签
- 参数
-
| [in] | value | 标签文本,例如 !!opencv-matrix |
- 注解
- 当前节点需要是标量或容器节点。
◆ size()
| std::size_t rm::yaml::Node::size |
( |
| ) |
const |
|
noexcept |
◆ tag()
| std::string_view rm::yaml::Node::tag |
( |
| ) |
const |
|
noexcept |
◆ type()
◆ valid()
| bool rm::yaml::Node::valid |
( |
| ) |
const |
|
noexcept |
◆ valueOr()
template<typename T>
| T rm::yaml::Node::valueOr |
( |
T | fallback | ) |
const |
读取节点值,失败时返回默认值
- 模板参数
-
- 参数
-
- 返回
- 转换结果或默认值
◆ write()
template<typename T>
| bool rm::yaml::Node::write |
( |
const T & | value | ) |
|
写入任意受支持类型
- 模板参数
-
- 参数
-
- 返回
- 是否写入成功
◆ dump
| std::string dump |
( |
const Node & | node | ) |
|
|
friend |
将节点及其后代序列化为 YAML
- 参数
-
- 返回
- YAML 文本,节点无效时返回空字符串
◆ load
| Result load |
( |
std::string_view | path | ) |
|
|
friend |
◆ parse
| Result parse |
( |
std::string_view | source | ) |
|
|
friend |
◆ Result