chenjunfu2-nbt-cpp v2.1.0
一个基于CPP20的NBT(Named Binary Tag)库
载入中...
搜索中...
未找到
NBT_IO::DefaultInputStream< T > 模板类 参考

默认输入流类,用于从标准库容器中读取数据 更多...

#include <NBT_IO.hpp>

Public 类型

using StreamType = T
 容器类型
using ValueType = typename T::value_type
 容器值类型

Public 成员函数

 DefaultInputStream (const T &&_tData, size_t szStartIdx=0)=delete
 禁止使用临时对象构造
 DefaultInputStream (const T &_tData, size_t szStartIdx=0)
 构造函数
 ~DefaultInputStream (void)=default
 默认析构函数
 DefaultInputStream (const DefaultInputStream &)=delete
 禁止拷贝构造
 DefaultInputStream (DefaultInputStream &&)=delete
 禁止移动构造
DefaultInputStreamoperator= (const DefaultInputStream &)=delete
 禁止拷贝赋值
DefaultInputStreamoperator= (DefaultInputStream &&)=delete
 禁止移动赋值
const ValueTypeoperator[] (size_t szIndex) const noexcept
 下标访问运算符
const ValueTypeGetNext () noexcept
 获取下一个字节并推进读取位置
void GetRange (void *pDest, size_t szSize) noexcept
 从流中读取一段数据
void UnGet () noexcept
 回退一个字节的读取
const ValueTypeCurData () const noexcept
 获取当前读取位置的指针
size_t AddIndex (size_t szSize) noexcept
 向后推进读取
size_t SubIndex (size_t szSize) noexcept
 向前撤销读取
bool IsEnd () const noexcept
 检查是否已到达流末尾
size_t Size () const noexcept
 获取流的总大小
bool HasAvailData (size_t szSize) const noexcept
 检查是否还有足够的数据可供读取
void Reset () noexcept
 重置流读取位置到起始处
const ValueTypeBaseData () const noexcept
 获取底层数据的起始指针
size_t Index () const noexcept
 获取当前读取位置(只读)
size_t & Index () noexcept
 获取当前读取位置(可写)

详细描述

template<typename T = std::vector<uint8_t>>
class NBT_IO::DefaultInputStream< T >

默认输入流类,用于从标准库容器中读取数据

模板参数
T数据容器类型,必须满足以下要求:
  • value_type的大小必须为1字节
  • value_type必须是可平凡复制的类型
注解
这个类用于标准库的顺序容器,非标准库容器顺序请使用其它的自定义流对象,而非使用此对象, 因为此对象对标准库容器的部分实现存在假设,其它非标准库容器极有可能不兼容导致未定义行为。 可以注意到部分接口在类中并未使用,这是未来扩展时可能用到的,如果自定义流对象,则可以省略部分未使用的接口。

构造及析构函数说明

◆ DefaultInputStream()

template<typename T = std::vector<uint8_t>>
NBT_IO::DefaultInputStream< T >::DefaultInputStream ( const T & _tData,
size_t szStartIdx = 0 )
inline

构造函数

参数
_tData输入数据容器的常量引用
szStartIdx起始读取索引位置
注解
指定szStartIdx为0则从头开始读取,否则从指定索引位置开始读取

成员函数说明

◆ AddIndex()

template<typename T = std::vector<uint8_t>>
size_t NBT_IO::DefaultInputStream< T >::AddIndex ( size_t szSize)
inlinenoexcept

向后推进读取

参数
szSize要推进的字节数
返回
推进后的新读取位置
注解
这个接口一般与CurData合并使用,通过CurData读取一段数据后,调用此接口移动当前读取位置

◆ BaseData()

template<typename T = std::vector<uint8_t>>
const ValueType * NBT_IO::DefaultInputStream< T >::BaseData ( ) const
inlinenoexcept

获取底层数据的起始指针

返回
指向底层数据起始位置的常量指针

◆ CurData()

template<typename T = std::vector<uint8_t>>
const ValueType * NBT_IO::DefaultInputStream< T >::CurData ( ) const
inlinenoexcept

获取当前读取位置的指针

返回
指向当前读取位置数据的指针
注解
这个接口一般用于直接访问当前及后续的数据而不拷贝

◆ GetNext()

template<typename T = std::vector<uint8_t>>
const ValueType & NBT_IO::DefaultInputStream< T >::GetNext ( )
inlinenoexcept

获取下一个字节并推进读取位置

返回
下一个字节的常量引用
注解
这个接口一般用于逐个从流中读取数据

◆ GetRange()

template<typename T = std::vector<uint8_t>>
void NBT_IO::DefaultInputStream< T >::GetRange ( void * pDest,
size_t szSize )
inlinenoexcept

从流中读取一段数据

参数
pDest指向要读取数据的目标缓冲区的指针
szSize要读取的数据大小(字节数)
注解
这个接口一般用于批量从流中读取数据

◆ HasAvailData()

template<typename T = std::vector<uint8_t>>
bool NBT_IO::DefaultInputStream< T >::HasAvailData ( size_t szSize) const
inlinenoexcept

检查是否还有足够的数据可供读取

参数
szSize需要读取的数据大小
返回
如果剩余数据足够则返回true,否则返回false

◆ Index() [1/2]

template<typename T = std::vector<uint8_t>>
size_t NBT_IO::DefaultInputStream< T >::Index ( ) const
inlinenoexcept

获取当前读取位置(只读)

返回
当前读取位置索引

◆ Index() [2/2]

template<typename T = std::vector<uint8_t>>
size_t & NBT_IO::DefaultInputStream< T >::Index ( )
inlinenoexcept

获取当前读取位置(可写)

返回
当前读取位置索引的引用
注解
这个接口允许直接修改读取位置,调用者保证修改后的索引范围合法

◆ IsEnd()

template<typename T = std::vector<uint8_t>>
bool NBT_IO::DefaultInputStream< T >::IsEnd ( ) const
inlinenoexcept

检查是否已到达流末尾

返回
如果已到达或超过流末尾则返回true,否则返回false

◆ operator[]()

template<typename T = std::vector<uint8_t>>
const ValueType & NBT_IO::DefaultInputStream< T >::operator[] ( size_t szIndex) const
inlinenoexcept

下标访问运算符

参数
szIndex索引位置
返回
对应位置的常量引用
注解
这个接口一般用于随机访问流中的数据,不改变当前读取位置,调用者保证访问范围合法

◆ Size()

template<typename T = std::vector<uint8_t>>
size_t NBT_IO::DefaultInputStream< T >::Size ( ) const
inlinenoexcept

获取流的总大小

返回
流的总大小,以字节数计

◆ SubIndex()

template<typename T = std::vector<uint8_t>>
size_t NBT_IO::DefaultInputStream< T >::SubIndex ( size_t szSize)
inlinenoexcept

向前撤销读取

参数
szSize要撤销的字节数
返回
撤销后的新读取位置
注解
这个接口一般用于在某些情况下撤销一部分的读取

◆ UnGet()

template<typename T = std::vector<uint8_t>>
void NBT_IO::DefaultInputStream< T >::UnGet ( )
inlinenoexcept

回退一个字节的读取

注解
如果当前已在流的起始位置,则不会进行任何操作

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