# wbuffer_t

# 概述

Write Buffer。用于数据打包。

示例:

uint8_t buff[128];
wbuffer_t wbuffer;
rbuffer_t rbuffer;
const char* str = NULL;
wbuffer_init(&wbuffer, buff, sizeof(buff));

wbuffer_write_string(&wbuffer, "hello awtk");

rbuffer_init(&rbuffer, wbuffer.data, wbuffer.cursor);
rbuffer_read_string(&rbuffer, &str);
wbuffer_t wbuffer;
wbuffer_init_extendable(&wbuffer);

wbuffer_write_string(&wbuffer, "hello awtk");

wbuffer_deinit(&wbuffer);

如果初始化为extendable,则最后需要调用wbuffer_deinit释放资源。

# 函数

函数名称 说明
wbuffer_deinit 释放资源。
wbuffer_extend_capacity 扩展缓冲区至指定的大小。
wbuffer_has_room 是否还有空间。
wbuffer_init 初始wbuffer对象。
wbuffer_init_extendable 初始wbuffer对象,容量不够时是否支持自动扩展,使用完成后需要调用wbuffer_deinit释放资源。
wbuffer_rewind 重置当前写入位置。
wbuffer_skip 跳过指定的长度。
wbuffer_write_binary 写入指定长度的二进制数据。
wbuffer_write_double 写入double数据。
wbuffer_write_float 写入float数据。
wbuffer_write_int32 写入int32数据。
wbuffer_write_string 写入字符串。
wbuffer_write_uint16 写入uint16数据。
wbuffer_write_uint32 写入uint32数据。
wbuffer_write_uint64 写入uint64数据。
wbuffer_write_uint8 写入uint8数据。

# 属性

属性名称 类型 说明
capacity uint32_t 数据缓冲区最大容量。
cursor uint32_t 当前写入位置。
data uint8_t* 数据缓冲区。用于保存写入的数据。
extendable bool_t 容量不够时是否支持自动扩展。

# wbuffer_deinit 函数

  • 函数功能:

释放资源。

  • 函数原型:
ret_t wbuffer_deinit (wbuffer_t* wbuffer);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。

# wbuffer_extend_capacity 函数

  • 函数功能:

扩展缓冲区至指定的大小。

  • 函数原型:
ret_t wbuffer_extend_capacity (wbuffer_t* wbuffer, uint32_t capacity);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
capacity uint32_t 缓冲区的容量。

# wbuffer_has_room 函数

  • 函数功能:

是否还有空间。

  • 函数原型:
bool_t wbuffer_has_room (wbuffer_t* wbuffer, uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 bool_t 返回FALSE表示无,否则表示有。
wbuffer wbuffer_t* wbuffer对象。
size uint32_t 空间大小。

# wbuffer_init 函数

  • 函数功能:

初始wbuffer对象。

  • 函数原型:
wbuffer_t* wbuffer_init (wbuffer_t* wbuffer, uint8_t* data, uint32_t capacity);
  • 参数说明:
参数 类型 说明
返回值 wbuffer_t* wbuffer对象本身。
wbuffer wbuffer_t* wbuffer对象。
data uint8_t* 缓冲区。
capacity uint32_t 缓冲区的容量。

# wbuffer_init_extendable 函数

  • 函数功能:

初始wbuffer对象,容量不够时是否支持自动扩展,使用完成后需要调用wbuffer_deinit释放资源。

  • 函数原型:
wbuffer_t* wbuffer_init_extendable (wbuffer_t* wbuffer);
  • 参数说明:
参数 类型 说明
返回值 wbuffer_t* wbuffer对象本身。
wbuffer wbuffer_t* wbuffer对象。

# wbuffer_rewind 函数

  • 函数功能:

重置当前写入位置。

  • 函数原型:
ret_t wbuffer_rewind (wbuffer_t* wbuffer);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。

# wbuffer_skip 函数

  • 函数功能:

跳过指定的长度。

  • 函数原型:
ret_t wbuffer_skip (wbuffer_t* wbuffer, int32_t delta);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
delta int32_t 跳过的偏移量,正数往前负数往回跳。

# wbuffer_write_binary 函数

  • 函数功能:

写入指定长度的二进制数据。

  • 函数原型:
ret_t wbuffer_write_binary (wbuffer_t* wbuffer, const void* data, uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
data const void* 要写入的数据。
size uint32_t 要写入的数据长度。

# wbuffer_write_double 函数

  • 函数功能:

写入double数据。

  • 函数原型:
ret_t wbuffer_write_double (wbuffer_t* wbuffer, double value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value double 要写入的数据。

# wbuffer_write_float 函数

  • 函数功能:

写入float数据。

  • 函数原型:
ret_t wbuffer_write_float (wbuffer_t* wbuffer, float value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value float 要写入的数据。

# wbuffer_write_int32 函数

  • 函数功能:

写入int32数据。

  • 函数原型:
ret_t wbuffer_write_int32 (wbuffer_t* wbuffer, int32_t value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value int32_t 要写入的数据。

# wbuffer_write_string 函数

  • 函数功能:

写入字符串。

  • 函数原型:
ret_t wbuffer_write_string (wbuffer_t* wbuffer, const char* data);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
data const char* 要写入的字符串。

# wbuffer_write_uint16 函数

  • 函数功能:

写入uint16数据。

  • 函数原型:
ret_t wbuffer_write_uint16 (wbuffer_t* wbuffer, uint16_t value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value uint16_t 要写入的数据。

# wbuffer_write_uint32 函数

  • 函数功能:

写入uint32数据。

  • 函数原型:
ret_t wbuffer_write_uint32 (wbuffer_t* wbuffer, uint32_t value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value uint32_t 要写入的数据。

# wbuffer_write_uint64 函数

  • 函数功能:

写入uint64数据。

  • 函数原型:
ret_t wbuffer_write_uint64 (wbuffer_t* wbuffer, uint64_t value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value uint64_t 要写入的数据。

# wbuffer_write_uint8 函数

  • 函数功能:

写入uint8数据。

  • 函数原型:
ret_t wbuffer_write_uint8 (wbuffer_t* wbuffer, uint8_t value);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
wbuffer wbuffer_t* wbuffer对象。
value uint8_t 要写入的数据。

# capacity 属性

数据缓冲区最大容量。

  • 类型:uint32_t
特性 是否支持
可直接读取
可直接修改

# cursor 属性

当前写入位置。

  • 类型:uint32_t
特性 是否支持
可直接读取
可直接修改

# data 属性

数据缓冲区。用于保存写入的数据。

  • 类型:uint8_t*
特性 是否支持
可直接读取
可直接修改

# extendable 属性

容量不够时是否支持自动扩展。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改