awtk/docs/manual/wbuffer_t.md
2019-01-17 15:56:15 +08:00

337 lines
7.7 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_deinit">wbuffer\_deinit</a> | 释放资源。 |
| <a href="#wbuffer_t_wbuffer_init">wbuffer\_init</a> | 初始wbuffer对象。 |
| <a href="#wbuffer_t_wbuffer_init_extendable">wbuffer\_init\_extendable</a> | 初始wbuffer对象自动扩展buffer使用完成后需要调用wbuffer\_deinit释放资源。 |
| <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_float">wbuffer\_write\_float</a> | 写入float数据。 |
| <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_uint8">wbuffer\_write\_uint8</a> | 写入uint8数据。 |
### 属性
<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\_deinit 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_deinit"> 释放资源。
* 函数原型:
```
ret_t wbuffer_deinit (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
#### wbuffer\_init 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_init"> 初始wbuffer对象。
* 函数原型:
```
wbuffer_t* wbuffer_init (wbuffer_t* wbuffer, uint8_t* data, uint16_t capacity);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| data | uint8\_t* | 缓冲区。 |
| capacity | uint16\_t | 缓冲区的容量。 |
#### wbuffer\_init\_extendable 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_init_extendable"> 初始wbuffer对象自动扩展buffer使用完成后需要调用wbuffer\_deinit释放资源。
* 函数原型:
```
wbuffer_t* wbuffer_init_extendable (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| 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, void* data, uint32_t size);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| data | void* | 写入的数据。 |
| size | uint32\_t | 写入的数据长度。 |
#### wbuffer\_write\_float 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_write_float"> 写入float数据。
* 函数原型:
```
ret_t wbuffer_write_float (wbuffer_t* wbuffer, float_t value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| value | float\_t | 写入的数据。 |
#### wbuffer\_write\_string 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_write_string"> 写入字符串。
* 函数原型:
```
ret_t wbuffer_write_string (wbuffer_t* wbuffer, char* data);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| data | 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\_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 | 写入的数据。 |
#### 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
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |