#ifndef __HGBUFFER_H__ #define __HGBUFFER_H__ #include "HGDef.h" #include "HGBaseErr.h" HG_DECLARE_HANDLE(HGBuffer); /* 创建新的缓冲区 * 参数: * 1) size: in, 缓冲区大小, 单位字节 * 2) buffer: out, 新缓冲区句柄 * 说明: * 1) 内部会分配size字节大小的内存 */ HGEXPORT HGResult HGAPI HGBase_CreateBuffer(HGUSize size, HGBuffer* buffer); /* 通过已有数据创建新的缓冲区 * 参数: * 1) data: in, 已有的数据地址 * 2) size: in, 已有的数据大小, 单位字节 * 3) buffer: out, 新缓冲区句柄 * 说明: * 1) 内部会分配size字节大小的内存, 新的缓冲区创建完成时, 会将data中的数据拷贝过去 */ HGEXPORT HGResult HGAPI HGBase_CreateBufferFromData(const HGByte* data, HGUSize size, HGBuffer* buffer); /* 通过已有数据创建新的缓冲区(不分配内存, 不拷贝数据) * 参数: * 1) data: in, 已有的数据地址 * 2) size: in, 已有的数据大小, 单位字节 * 3) buffer: out, 新缓冲区句柄 * 说明: * 1) 内部不会分配内存, 将直接使用原始数据 * 2) 需保证缓冲区销毁前原始数据一直有效 */ HGEXPORT HGResult HGAPI HGBase_CreateBufferWithData(HGByte* data, HGUSize size, HGBuffer* buffer); /* 通过现有缓冲区创建新的缓冲区 * 参数: * 1) srcBuffer: in, 已有缓冲区 * 2) buffer: out, 新缓冲区句柄 * 说明: * 1) 内部会分配现有缓冲区的size字节大小的内存, 新缓冲区创建完成时, 会将现有缓冲区中的数据拷贝过去 */ HGEXPORT HGResult HGAPI HGBase_CloneBuffer(HGBuffer srcBuffer, HGBuffer* buffer); /* 销毁缓冲区 * 参数: * 1) buffer: in, 缓冲区句柄 * 说明: * 1) 如果内部分配了内存, 销毁的时候会自动释放该内存 */ HGEXPORT HGResult HGAPI HGBase_DestroyBuffer(HGBuffer buffer); /* 获取缓冲区数据地址 * 参数: * 1) buffer: in, 缓冲区句柄 * 2) data: out, 数据地址 * 说明: * 1) 如果内部分配了内存, 返回的是分配的内存地址 * 2) 如果内部没有分配内存, 返回的则是原始数据的地址 */ HGEXPORT HGResult HGAPI HGBase_GetBufferData(HGBuffer buffer, HGByte** data); /* 获取缓冲区数据大小 * 参数: * 1) buffer: in, 缓冲区句柄 * 2) size: out, 数据长度 * 说明: * 1) 如果内部分配了内存, 返回的是分配的内存大小 * 2) 如果内部没有分配内存, 返回的则是原始数据的大小 */ HGEXPORT HGResult HGAPI HGBase_GetBufferSize(HGBuffer buffer, HGUSize* size); #endif /* __HGBUFFER_H__ */