RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::yaml::Node类 参考

YAML 树节点句柄 更多...

#include <rmvl/core/yaml.hpp>

rm::yaml::Node 的协作图:

Public 成员函数

 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>
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)
 向序列追加一个值

静态 Public 成员函数

static Node createMap ()
 创建空映射根节点
static Node createSequence ()
 创建空序列根节点
static Node createScalar (std::string_view value)
 创建标量根节点

友元

struct Result
Result parse (std::string_view source)
 从内存解析 YAML
Result load (std::string_view path)
 从文件加载 YAML
std::string dump (const Node &node)
 将节点及其后代序列化为 YAML

详细描述

YAML 树节点句柄

  • 拷贝 Node 仅复制共享所有权和节点标识,不复制 YAML 数据
  • scalar()、key() 和 keys() 返回的视图会在同一棵树发生写入后失效
  • 删除节点后,指向被删除节点及其后代的既有句柄不可继续使用
    注解
    同一棵树上的并发写入,或读写并发,需要由调用方同步。

构造及析构函数说明

◆ Node()

rm::yaml::Node::Node ( )
defaultnoexcept

构造无效节点

成员函数说明

◆ append()

Node rm::yaml::Node::append ( )

向序列末尾添加空值节点

返回
新增子节点,当前节点无效时返回无效节点
注解
当前节点不是序列时,其原有内容会被替换为空序列。
函数调用图:

◆ as()

template<typename T>
std::optional< T > rm::yaml::Node::as ( ) const

读取并转换节点值

模板参数
T目标类型
返回
成功时返回目标值,否则返回 std::nullopt
函数调用图:

◆ contains()

bool rm::yaml::Node::contains ( std::string_view name) const
noexcept

判断映射是否包含指定键

参数
[in]name键名
返回
是否存在对应子节点
函数调用图:

◆ createMap()

Node rm::yaml::Node::createMap ( )
static

创建空映射根节点

函数调用图:

◆ createScalar()

Node rm::yaml::Node::createScalar ( std::string_view value)
static

创建标量根节点

参数
[in]value标量文本
返回
新建的标量节点
函数调用图:

◆ createSequence()

Node rm::yaml::Node::createSequence ( )
static

创建空序列根节点

函数调用图:

◆ ensure()

Node rm::yaml::Node::ensure ( std::string_view name)

获取或创建映射子节点

参数
[in]name键名
返回
对应子节点,当前节点无效时返回无效节点
注解
当前节点不是映射时,其原有内容会被替换为空映射。
函数调用图:

◆ erase() [1/2]

bool rm::yaml::Node::erase ( std::size_t index)

删除指定位置的容器子节点

参数
[in]index从 0 开始的子节点位置
返回
是否找到并删除节点
函数调用图:

◆ erase() [2/2]

bool rm::yaml::Node::erase ( std::string_view name)

删除映射子节点

参数
[in]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

获取指定位置的容器子节点

参数
[in]index从 0 开始的子节点位置
返回
索引有效时返回子节点,否则返回无效节点
函数调用图:

◆ operator[]() [2/2]

Node rm::yaml::Node::operator[] ( std::string_view name) const
noexcept

查找映射子节点

参数
[in]name键名
返回
找到时返回子节点,否则返回无效节点
函数调用图:

◆ push()

template<typename T>
bool rm::yaml::Node::push ( const T & value)

向序列追加一个值

模板参数
T输入类型
参数
[in]value输入值
返回
是否写入成功
函数调用图:

◆ read()

template<typename T>
bool rm::yaml::Node::read ( T & value) const

读取并转换节点值

模板参数
T目标类型,支持标量、枚举、optional、vector、array、以 string 为键的 map/unordered_map 和 ADL 自定义类型
参数
[out]value目标对象
返回
是否转换成功
函数调用图:

◆ 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 )

设置映射字段

模板参数
T输入类型
参数
[in]name键名
[in]value输入值
返回
是否写入成功
函数调用图:

◆ setNull()

void rm::yaml::Node::setNull ( )

将节点替换为空值

函数调用图:

◆ setScalar()

void rm::yaml::Node::setScalar ( std::string_view value)

将节点替换为标量

参数
[in]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
返回
子节点数量,非容器节点返回 0

◆ tag()

std::string_view rm::yaml::Node::tag ( ) const
noexcept
返回
节点标签,未设置标签时返回空视图
函数调用图:

◆ type()

NodeType rm::yaml::Node::type ( ) const
noexcept
返回
节点类型
函数调用图:

◆ valid()

bool rm::yaml::Node::valid ( ) const
noexcept
返回
节点是否有效
函数调用图:

◆ valueOr()

template<typename T>
T rm::yaml::Node::valueOr ( T fallback) const

读取节点值,失败时返回默认值

模板参数
T目标类型
参数
[in]fallback默认值
返回
转换结果或默认值
函数调用图:

◆ write()

template<typename T>
bool rm::yaml::Node::write ( const T & value)

写入任意受支持类型

模板参数
T输入类型
参数
[in]value输入值
返回
是否写入成功
函数调用图:

◆ dump

std::string dump ( const Node & node)
friend

将节点及其后代序列化为 YAML

参数
[in]node待序列化节点
返回
YAML 文本,节点无效时返回空字符串

◆ load

Result load ( std::string_view path)
friend

从文件加载 YAML

参数
[in]path文件路径
返回
加载与解析结果

◆ parse

Result parse ( std::string_view source)
friend

从内存解析 YAML

参数
[in]sourceYAML 文本
返回
解析结果

◆ Result

friend struct Result
friend