mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-11-30 02:58:26 +08:00
3.6 KiB
3.6 KiB
读缓冲区扩展函数
rbuffer 有以下属性:
- data 缓冲区的指针
- cursor 当前读的位置
- capacity 最大容量
1.rbuffer_create
创建 rbuffer 对象。
原型
rbuffer_create(str) => object
rbuffer_create(binary) => object
rbuffer_create(data, size) => object
2.rbuffer_skip
跳过指定长度的数据。
原型
rbuffer_skip(rbuffer, size) => bool
3.rbuffer_rewind
重置读取指针到 0。
原型
rbuffer_rewind(rbuffer) => bool
4.rbuffer_read_uint8
读取 uint8_t 类型的数据。
原型
rbuffer_read_uint8(rbuffer) => uint8_t
5.rbuffer_read_uint16
读取 uint16_t 类型的数据。
原型
rbuffer_read_uint16(rbuffer) => uint16_t
6.rbuffer_read_uint32
读取 uint32_t 类型的数据。
原型
rbuffer_read_uint32(rbuffer) => uint32_t
7.rbuffer_read_uint64
读取 uint64_t 类型的数据。
原型
rbuffer_read_uint64(rbuffer) => uint64_t
8.rbuffer_read_int8
读取 int8_t 类型的数据。
原型
rbuffer_read_int8(rbuffer) => int8_t
9.rbuffer_read_int16
读取 int16_t 类型的数据。
原型
rbuffer_read_int16(rbuffer) => int16_t
10.rbuffer_read_int32
读取 int32_t 类型的数据。
原型
rbuffer_read_int32(rbuffer) => int32_t
11.rbuffer_read_int64
读取 int64_t 类型的数据。
原型
rbuffer_read_int64(rbuffer) => int64_t
12.rbuffer_read_float
读取 float 类型的数据。
原型
rbuffer_read_float(rbuffer) => float
13.rbuffer_read_double
读取 double 类型的数据。
原型
rbuffer_read_double(rbuffer) => double
14.rbuffer_read_string
读取字符串。
原型
rbuffer_read_string(rbuffer) => str
15.rbuffer_read_binary
读取指定长度的二进制数据。
原型
rbuffer_read_binary(rbuffer, size) => binary
16.rbuffer_get_data
获取 buffer 的指针。
原型
rbuffer_get_data(rbuffer) => pointer
17.rbuffer_get_cursor
获取 buffer 当前的读取位置。
原型
rbuffer_get_cursor(rbuffer) => uint32_t
18.rbuffer_get_capacity
获取 buffer 的容量。
原型
rbuffer_get_capacity(rbuffer) => uint32_t
更多示例
...
b=rbuffer_create(wbuffer_get_data(a), wbuffer_get_cursor(a))
assert(rbuffer_get_cursor(b)==0)
assert(rbuffer_read_int8(b)== -10)
assert(rbuffer_get_cursor(b)==1)
assert(rbuffer_read_int16(b)==-1122)
assert(rbuffer_get_cursor(b)==3)
assert(rbuffer_read_int32(b)==-11223344)
assert(rbuffer_get_cursor(b)==7)
assert(rbuffer_read_int64(b)==-1122334455667788)
assert(rbuffer_get_cursor(b)==15)
assert(rbuffer_read_string(b)=="hello")
assert(rbuffer_get_cursor(b)==21)
c = rbuffer_read_binary(b, 6)
assert(rbuffer_get_cursor(b)==27)
wbuffer_rewind(a)
assert(wbuffer_get_cursor(a)==0)
wbuffer_write_binary(a, c)
assert(wbuffer_get_cursor(a)==6)
unset(a)
unset(b)