|
chenjunfu2-nbt-cpp v2.1.3
一个基于CPP20的NBT(Named Binary Tag)库
|
NBT 数据收集器,实现访问器接口,将扫描结果构建为完整的 Compound 树 更多...
#include <NBT_Visitor.hpp>
类 | |
| struct | Frame |
| 栈帧 更多... | |
Public 类型 | |
| using | ResultControl = NBT_Visitor_ResultControl |
| 控制流返回码(普通回调),直接映射 NBT_Visitor_ResultControl | |
| using | NestingControl = NBT_Visitor_NestingControl |
| 控制流返回码(嵌套结构入口回调),直接映射 NBT_Visitor_NestingControl | |
Public 成员函数 | |
| NBT_Visitor_Collector (const NBT_Visitor_Collector &)=delete | |
| 禁用拷贝构造函数 | |
| NBT_Visitor_Collector (NBT_Visitor_Collector &&)=default | |
| 默认移动构造函数 | |
| NBT_Visitor_Collector & | operator= (const NBT_Visitor_Collector &)=delete |
| 禁用拷贝赋值运算符 | |
| NBT_Visitor_Collector & | operator= (NBT_Visitor_Collector &&)=default |
| 默认移动赋值运算符 | |
| const NBT_Type::Compound & | ViewRoot (void) const noexcept |
| 获取根节点的常量引用 | |
| NBT_Type::Compound && | MoveRoot (void) noexcept |
| 移动根节点(获取所有权) | |
| template<typename T> | |
| ResultControl | VisitNumericResult (T tNumericResult) |
| 处理数值类型节点 | |
| template<typename T> | |
| ResultControl | VisitArrayResult (T &&tArrayResult) |
| 处理数组类型节点(ByteArray/IntArray/LongArray) | |
| ResultControl | VisitStringResult (NBT_Type::String &&strResult) |
| 处理字符串类型节点 | |
| ResultControl | VisitEndResult (void) |
| 处理 End 标记节点 | |
| ResultControl | VisitListBegin (NBT_TAG enListElementTag, size_t szListLength) |
| NestingControl | VisitListElementBegin (NBT_TAG enListElementTag, size_t szListIndex) |
| 开始处理 List 中的一个元素 | |
| ResultControl | VisitListElementEnd (NBT_TAG enListElementTag, size_t szListIndex) |
| 结束处理 List 中的一个元素 | |
| ResultControl | VisitListEnd (void) |
| ResultControl | VisitCompoundBegin (void) |
| NestingControl | VisitCompoundNextEntryType (NBT_TAG enCompoundEntryTag) |
| 在 Compound 中,开始处理下一个条目之前,仅提供类型信息 | |
| NestingControl | VisitCompoundEntryBegin (NBT_TAG enCompoundEntryTag, NBT_Type::String &&sName) |
| ResultControl | VisitCompoundEntryEnd (NBT_TAG enCompoundEntryTag, NBT_Type::String &&sName) |
| 结束处理 Compound 中的一个条目 | |
| ResultControl | VisitCompoundEnd (void) |
| void | VisitBegin (void) |
| 整体扫描开始:初始化栈,将根节点设为当前帧 | |
| void | VisitEnd (void) |
| 整体扫描结束:清理栈帧 | |
| template<typename... Args> | |
| void | VisitError (NBT_Print_Level lvl, const std::format_string< Args... > fmt, Args &&... args) noexcept |
| 错误处理回调 | |
Protected 成员函数 | |
| template<typename T> | |
| bool | AppendStackTop (T &&tVal) |
| 将值追加到当前栈顶的容器中 | |
| bool | PopStack (Frame::Type enTypeRequires) |
| 弹出栈顶,并检查类型是否匹配 | |
Protected 属性 | |
| NBT_Type::String | sPendingKey |
| 暂存的键名,用于插入 Compound | |
| std::vector< Frame > | vStack {} |
| 栈,记录当前嵌套的容器 | |
| NBT_Type::Compound | cpdRoot {} |
| 根 Compound 节点 | |
NBT 数据收集器,实现访问器接口,将扫描结果构建为完整的 Compound 树
|
inlineprotected |
将值追加到当前栈顶的容器中
| T | 值类型 |
| tVal | 待插入的值 |
|
inlinenoexcept |
移动根节点(获取所有权)
|
inlineprotected |
弹出栈顶,并检查类型是否匹配
| enTypeRequires | 要求的栈帧类型 |
|
inlinenoexcept |
获取根节点的常量引用
|
inline |
处理数组类型节点(ByteArray/IntArray/LongArray)
| T | 数组类型,必须满足 NBT_Type::IsArrayType_V 且不是引用 |
| tArrayResult | 数组结果(右值引用) |
|
inline |
整体扫描开始:初始化栈,将根节点设为当前帧
|
inline |
|
inline |
|
inline |
| enCompoundEntryTag | 条目的类型标签 |
| sName | 条目的键名(右值引用) |
|
inline |
结束处理 Compound 中的一个条目
| enCompoundEntryTag | 条目的类型标签 |
| sName | 条目的键名(右值引用) |
|
inline |
在 Compound 中,开始处理下一个条目之前,仅提供类型信息
| enCompoundEntryTag | 条目的类型标签 |
|
inline |
处理 End 标记节点
|
inlinenoexcept |
错误处理回调
| Args | 格式化参数类型包 |
| lvl | 错误级别 |
| fmt | 格式化字符串 |
| args | 格式化参数 |
|
inline |
| enListElementTag | 列表元素的类型标签 |
| szListLength | 列表长度 |
|
inline |
开始处理 List 中的一个元素
| enListElementTag | 列表元素的类型标签 |
| szListIndex | 当前元素在列表中的索引(从0开始) |
|
inline |
结束处理 List 中的一个元素
| enListElementTag | 列表元素的类型标签 |
| szListIndex | 当前元素在列表中的索引(从0开始) |
|
inline |
|
inline |
|
inline |
处理字符串类型节点
| strResult | 字符串结果(右值引用) |