Skip to content

NBT_CPP

Choose a tag to compare

@chenjunfu2 chenjunfu2 released this 17 May 22:32
· 17 commits to master since this release

vcpkg 2.1.3

更新说明

API 灵活性提升、流处理接口规范化、M-UTF-8 字符类型标准化、便捷文件操作接口新增和代码健壮性增强。

修复内容

  • NBT_Visitor 中的 ResultControl 和 NestingControl 从嵌套枚举提升为全局枚举 NBT_Visitor_ResultControl 和 NBT_Visitor_NestingControl,现在用户可以直接使用全局枚举了。
  • NBT_Print 添加类型别名 using Level = NBT_Print_Level。

新增内容

  • 便捷文件操作接口:新增 NBT_Reader::SimpleReadNbtFile、NBT_Writer::SimpleWriteNbtFile 和 NBT_Scanner::SimpleScanNbtFile(需安装zlib库),提供从文件路径一步完成读取/写入/扫描的便捷方法,自动处理压缩/解压回退逻辑。
  • NBT_WriteStream::RemoveData(size_t):新增批量撤销写入字节的方法,与已有的 UnPut() 互补。
  • NBT_NoPrint 类:新增空输出打印工具类,拥有与 NBT_Print 完全相同的仿函数接口,用于替换 NBT_Print 以禁用所有信息输出。
  • MUTF8_Char_Traits:为 M-UTF-8 字符类型实现完整的 std::char_traits 接口,使 std::basic_string / std::basic_string_view 能与 M-UTF-8 字符类型标准库集成。
  • MUTF8_Char_Type / MUTF8_String / MUTF8_String_View:新增 M-UTF-8 默认字符类型及基于自定义 traits 的字符串/视图类型别名。

API 变更

  • 排序策略重构:NBT_Helper::Print、NBT_Helper::Serialize、NBT_Helper::Hash 和 NBT_Writer::WriteNBT 系列函数中,原有的 bool bSortCompound 模板参数全面替换为 SortPolicy 策略类型。同时新增 NoSortCompound 标签类型和 DefaultCompoundSort<bool bAscending> 策略类。用户现可传入自定义可调用对象来控制 Compound 的排序。
  • 流处理接口重命名:NBT_ReadStream 中 AddIndex → SkipData、SubIndex → RewindData,命名更准确地反映操作语义;移除无必要的 CurData() 和 BaseData() 接口。
  • NBT_IO 文件读写增强:WriteFile 和 ReadFile 新增 InfoFunc 模板参数以输出异常信息;ReadFile 改用 std::filesystem::file_size 替代 seekg/tellg 获取文件大小,并增加文件类型检查、大小溢出检查及完善的异常捕获处理。
  • 压缩解压接口统一:CompressDataNoThrow 和 DecompressDataNoThrow 的模板参数名 ErrInfoFunc 统一为 InfoFunc,参数名 funcErrInfo 统一为 funcInfo,错误输出格式统一通过 NBT_Print_Level::Err 等级传递。
  • MUTF8_Tool 模板:MU8T 默认类型从 uint8_t 改为 MUTF8_Char_Type,新增 MU8_String / MU8_String_View 成员类型——当 MU8T 为默认类型时自动选用带自定义 traits 的版本,否则回退标准库默认;所有返回 / 接受 M-UTF-8 字符串的公有接口统一改用新类型。
  • NBT_Type:NBT_String 的模板参数从 std::basic_string<uint8_t> 改为 MUTF8_String。

其它

  • 部分 Doxygen 注释更新。
  • 部分内部逻辑、类型修改、声明简化。
  • 部分无用代码与注释清理,代码格式化对齐。
  • 部分头文件包含关系变动。