chenjunfu2-nbt-cpp v2.1.3
一个基于CPP20的NBT(Named Binary Tag)库
载入中...
搜索中...
未找到
NBT_Visitor_Collector类 参考

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_Collectoroperator= (const NBT_Visitor_Collector &)=delete
 禁用拷贝赋值运算符
NBT_Visitor_Collectoroperator= (NBT_Visitor_Collector &&)=default
 默认移动赋值运算符
const NBT_Type::CompoundViewRoot (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< FramevStack {}
 栈,记录当前嵌套的容器
NBT_Type::Compound cpdRoot {}
 根 Compound 节点

详细描述

NBT 数据收集器,实现访问器接口,将扫描结果构建为完整的 Compound 树

注解
该类会自动管理栈帧,将解析出的值插入到正确的父容器(Compound 或 List)中。 支持多次调用 ScanNBT 合并多个 NBT 流(不会自动清除已有根节点)。

成员函数说明

◆ AppendStackTop()

template<typename T>
bool NBT_Visitor_Collector::AppendStackTop ( T && tVal)
inlineprotected

将值追加到当前栈顶的容器中

模板参数
T值类型
参数
tVal待插入的值
返回
成功返回 true,失败(栈空或容器无效)返回 false
注解
若值本身是 Compound 或 List,会自动推入新栈帧。

◆ MoveRoot()

NBT_Type::Compound && NBT_Visitor_Collector::MoveRoot ( void )
inlinenoexcept

移动根节点(获取所有权)

返回
根 Compound 对象的右值引用

◆ PopStack()

bool NBT_Visitor_Collector::PopStack ( Frame::Type enTypeRequires)
inlineprotected

弹出栈顶,并检查类型是否匹配

参数
enTypeRequires要求的栈帧类型
返回
成功(栈非空且类型匹配)返回 true,否则返回 false

◆ ViewRoot()

const NBT_Type::Compound & NBT_Visitor_Collector::ViewRoot ( void ) const
inlinenoexcept

获取根节点的常量引用

返回
根 Compound 对象的常量引用

◆ VisitArrayResult()

template<typename T>
ResultControl NBT_Visitor_Collector::VisitArrayResult ( T && tArrayResult)
inline

处理数组类型节点(ByteArray/IntArray/LongArray)

模板参数
T数组类型,必须满足 NBT_Type::IsArrayType_V 且不是引用
参数
tArrayResult数组结果(右值引用)
返回
控制码,决定后续行为

◆ VisitBegin()

void NBT_Visitor_Collector::VisitBegin ( void )
inline

整体扫描开始:初始化栈,将根节点设为当前帧

注解
不会自动清除已有根节点数据,多次调用会合并结果。

◆ VisitCompoundBegin()

ResultControl NBT_Visitor_Collector::VisitCompoundBegin ( void )
inline
返回
控制码,决定后续行为

◆ VisitCompoundEnd()

ResultControl NBT_Visitor_Collector::VisitCompoundEnd ( void )
inline
返回
控制码,决定后续行为

◆ VisitCompoundEntryBegin()

NestingControl NBT_Visitor_Collector::VisitCompoundEntryBegin ( NBT_TAG enCompoundEntryTag,
NBT_Type::String && sName )
inline
参数
enCompoundEntryTag条目的类型标签
sName条目的键名(右值引用)
返回
嵌套控制码,决定后续行为

◆ VisitCompoundEntryEnd()

ResultControl NBT_Visitor_Collector::VisitCompoundEntryEnd ( NBT_TAG enCompoundEntryTag,
NBT_Type::String && sName )
inline

结束处理 Compound 中的一个条目

参数
enCompoundEntryTag条目的类型标签
sName条目的键名(右值引用)
返回
控制码,决定后续行为

◆ VisitCompoundNextEntryType()

NestingControl NBT_Visitor_Collector::VisitCompoundNextEntryType ( NBT_TAG enCompoundEntryTag)
inline

在 Compound 中,开始处理下一个条目之前,仅提供类型信息

参数
enCompoundEntryTag条目的类型标签
返回
嵌套控制码,决定后续行为

◆ VisitEndResult()

ResultControl NBT_Visitor_Collector::VisitEndResult ( void )
inline

处理 End 标记节点

注解
通常用于 List 中的空列表或标记结束,一般用户无需特殊处理
返回
控制码,决定后续行为

◆ VisitError()

template<typename... Args>
void NBT_Visitor_Collector::VisitError ( NBT_Print_Level lvl,
const std::format_string< Args... > fmt,
Args &&... args )
inlinenoexcept

错误处理回调

模板参数
Args格式化参数类型包
参数
lvl错误级别
fmt格式化字符串
args格式化参数
注解
该函数仅用于输出/记录错误信息,不影响扫描的控制流。

◆ VisitListBegin()

ResultControl NBT_Visitor_Collector::VisitListBegin ( NBT_TAG enListElementTag,
size_t szListLength )
inline
参数
enListElementTag列表元素的类型标签
szListLength列表长度
返回
控制码,决定后续行为

◆ VisitListElementBegin()

NestingControl NBT_Visitor_Collector::VisitListElementBegin ( NBT_TAG enListElementTag,
size_t szListIndex )
inline

开始处理 List 中的一个元素

参数
enListElementTag列表元素的类型标签
szListIndex当前元素在列表中的索引(从0开始)
返回
嵌套控制码,决定是否进入该元素、跳过或停止

◆ VisitListElementEnd()

ResultControl NBT_Visitor_Collector::VisitListElementEnd ( NBT_TAG enListElementTag,
size_t szListIndex )
inline

结束处理 List 中的一个元素

参数
enListElementTag列表元素的类型标签
szListIndex当前元素在列表中的索引(从0开始)
返回
控制码,决定后续行为

◆ VisitListEnd()

ResultControl NBT_Visitor_Collector::VisitListEnd ( void )
inline
返回
控制码,决定后续行为

◆ VisitNumericResult()

template<typename T>
ResultControl NBT_Visitor_Collector::VisitNumericResult ( T tNumericResult)
inline

处理数值类型节点

模板参数
T数值类型,必须满足 NBT_Type::IsNumericType_V
参数
tNumericResult数值结果
返回
控制码,决定后续行为

◆ VisitStringResult()

ResultControl NBT_Visitor_Collector::VisitStringResult ( NBT_Type::String && strResult)
inline

处理字符串类型节点

参数
strResult字符串结果(右值引用)
返回
控制码,决定后续行为

该类的文档由以下文件生成: