awtk/docs/manual/wbuffer_t.md
2023-12-26 19:09:36 +08:00

563 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## wbuffer\_t
### 概述
Write Buffer。用于数据打包。
示例:
```c
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);
```
```c
wbuffer_t wbuffer;
wbuffer_init_extendable(&wbuffer);
wbuffer_write_string(&wbuffer, "hello awtk");
wbuffer_deinit(&wbuffer);
```
> 如果初始化为extendable则最后需要调用wbuffer\_deinit释放资源。
----------------------------------
### 函数
<p id="wbuffer_t_methods">
| 函数名称 | 说明 |
| -------- | ------------ |
| <a href="#wbuffer_t_wbuffer_create">wbuffer\_create</a> | 创建wbuffer对象。 |
| <a href="#wbuffer_t_wbuffer_create_extendable">wbuffer\_create\_extendable</a> | 创建可自动扩展的wbuffer对象。 |
| <a href="#wbuffer_t_wbuffer_deinit">wbuffer\_deinit</a> | 释放资源。 |
| <a href="#wbuffer_t_wbuffer_destroy">wbuffer\_destroy</a> | 销毁wbuffer对象。 |
| <a href="#wbuffer_t_wbuffer_extend_capacity">wbuffer\_extend\_capacity</a> | 扩展缓冲区至指定的大小。 |
| <a href="#wbuffer_t_wbuffer_has_room">wbuffer\_has\_room</a> | 是否还有空间。 |
| <a href="#wbuffer_t_wbuffer_init">wbuffer\_init</a> | 初始wbuffer对象。 |
| <a href="#wbuffer_t_wbuffer_init_extendable">wbuffer\_init\_extendable</a> | 初始化可自动扩展的wbuffer对象。使用完成后需要调用wbuffer\_deinit释放资源。 |
| <a href="#wbuffer_t_wbuffer_rewind">wbuffer\_rewind</a> | 重置当前写入位置。 |
| <a href="#wbuffer_t_wbuffer_skip">wbuffer\_skip</a> | 跳过指定的长度。 |
| <a href="#wbuffer_t_wbuffer_write_binary">wbuffer\_write\_binary</a> | 写入指定长度的二进制数据。 |
| <a href="#wbuffer_t_wbuffer_write_double">wbuffer\_write\_double</a> | 写入double数据。 |
| <a href="#wbuffer_t_wbuffer_write_float">wbuffer\_write\_float</a> | 写入float数据。 |
| <a href="#wbuffer_t_wbuffer_write_int16">wbuffer\_write\_int16</a> | 写入int16数据。 |
| <a href="#wbuffer_t_wbuffer_write_int32">wbuffer\_write\_int32</a> | 写入int32数据。 |
| <a href="#wbuffer_t_wbuffer_write_int64">wbuffer\_write\_int64</a> | 写入int64数据。 |
| <a href="#wbuffer_t_wbuffer_write_int8">wbuffer\_write\_int8</a> | 写入int8数据。 |
| <a href="#wbuffer_t_wbuffer_write_string">wbuffer\_write\_string</a> | 写入字符串。 |
| <a href="#wbuffer_t_wbuffer_write_uint16">wbuffer\_write\_uint16</a> | 写入uint16数据。 |
| <a href="#wbuffer_t_wbuffer_write_uint32">wbuffer\_write\_uint32</a> | 写入uint32数据。 |
| <a href="#wbuffer_t_wbuffer_write_uint64">wbuffer\_write\_uint64</a> | 写入uint64数据。 |
| <a href="#wbuffer_t_wbuffer_write_uint8">wbuffer\_write\_uint8</a> | 写入uint8数据。 |
| <a href="#wbuffer_t_wbuffer_write_value">wbuffer\_write\_value</a> | 写入value数据。 |
### 属性
<p id="wbuffer_t_properties">
| 属性名称 | 类型 | 说明 |
| -------- | ----- | ------------ |
| <a href="#wbuffer_t_capacity">capacity</a> | uint32\_t | 数据缓冲区最大容量。 |
| <a href="#wbuffer_t_cursor">cursor</a> | uint32\_t | 当前写入位置。 |
| <a href="#wbuffer_t_data">data</a> | uint8\_t* | 数据缓冲区。用于保存写入的数据。 |
| <a href="#wbuffer_t_extendable">extendable</a> | bool\_t | 容量不够时是否支持自动扩展。 |
#### wbuffer\_create 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_create">创建wbuffer对象。
* 函数原型:
```
wbuffer_t* wbuffer_create (void* data, uint32_t capacity);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| data | void* | 缓冲区。 |
| capacity | uint32\_t | 缓冲区的容量。 |
#### wbuffer\_create\_extendable 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_create_extendable">创建可自动扩展的wbuffer对象。
* 函数原型:
```
wbuffer_t* wbuffer_create_extendable ();
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
#### wbuffer\_deinit 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_deinit">释放资源。
* 函数原型:
```
ret_t wbuffer_deinit (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
#### wbuffer\_destroy 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_destroy">销毁wbuffer对象。
* 函数原型:
```
ret_t wbuffer_destroy (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
#### wbuffer\_extend\_capacity 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_init">初始wbuffer对象。
* 函数原型:
```
wbuffer_t* wbuffer_init (wbuffer_t* wbuffer, void* data, uint32_t capacity);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| data | void* | 缓冲区。 |
| capacity | uint32\_t | 缓冲区的容量。 |
#### wbuffer\_init\_extendable 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_init_extendable">初始化可自动扩展的wbuffer对象。使用完成后需要调用wbuffer\_deinit释放资源。
* 函数原型:
```
wbuffer_t* wbuffer_init_extendable (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
#### wbuffer\_rewind 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_rewind">重置当前写入位置。
* 函数原型:
```
ret_t wbuffer_rewind (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
#### wbuffer\_skip 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_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\_int16 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_write_int16">写入int16数据。
* 函数原型:
```
ret_t wbuffer_write_int16 (wbuffer_t* wbuffer, int16_t value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| value | int16\_t | 要写入的数据。 |
#### wbuffer\_write\_int32 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_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\_int64 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_write_int64">写入int64数据。
* 函数原型:
```
ret_t wbuffer_write_int64 (wbuffer_t* wbuffer, int64_t value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| value | int64\_t | 要写入的数据。 |
#### wbuffer\_write\_int8 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_write_int8">写入int8数据。
* 函数原型:
```
ret_t wbuffer_write_int8 (wbuffer_t* wbuffer, int8_t value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| value | int8\_t | 要写入的数据。 |
#### wbuffer\_write\_string 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 函数
-----------------------
* 函数功能:
> <p id="wbuffer_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 | 要写入的数据。 |
#### wbuffer\_write\_value 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_write_value">写入value数据。
* 函数原型:
```
ret_t wbuffer_write_value (wbuffer_t* wbuffer, const value_t* v);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| v | const value\_t* | 要写入的数据。 |
#### capacity 属性
-----------------------
> <p id="wbuffer_t_capacity">数据缓冲区最大容量。
* 类型uint32\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### cursor 属性
-----------------------
> <p id="wbuffer_t_cursor">当前写入位置。
* 类型uint32\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### data 属性
-----------------------
> <p id="wbuffer_t_data">数据缓冲区。用于保存写入的数据。
* 类型uint8\_t*
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### extendable 属性
-----------------------
> <p id="wbuffer_t_extendable">容量不够时是否支持自动扩展。
* 类型bool\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |