code_app/base/HGBuffer.h

76 lines
2.4 KiB
C

#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__ */