T-Box Basic dev
Loading...
Searching...
No Matches
rbuffer.h
Go to the documentation of this file.
1
10
11#ifndef __TBOX_RBUFFER_H__
12#define __TBOX_RBUFFER_H__
13
14#include <stdbool.h>
15#include <stddef.h>
16
17#ifdef __cplusplus
18extern "C"
19{
20#endif
21
27
31typedef struct
32{
33 size_t write_pos;
34 size_t read_pos;
35 size_t capacity;
36 size_t element_size;
37 void* buffer;
39
51int tbox_rbuffer_init(tbox_rbuffer_t* rbuffer, void* buffer, size_t buffer_size, size_t element_size);
52
59
66
74
82
90
97size_t tbox_rbuffer_len(const tbox_rbuffer_t* rbuffer);
98
105size_t tbox_rbuffer_avail(const tbox_rbuffer_t* rbuffer);
106
114
122
131size_t tbox_rbuffer_write(tbox_rbuffer_t* rbuffer, const void* data, size_t count);
132
141size_t tbox_rbuffer_read(tbox_rbuffer_t* rbuffer, void* data, size_t count);
142
151size_t tbox_rbuffer_peek(const tbox_rbuffer_t* rbuffer, void* data, size_t count);
152
160size_t tbox_rbuffer_skip(tbox_rbuffer_t* rbuffer, size_t count);
161
165
166#ifdef __cplusplus
167}
168#endif
169
170#endif /* __TBOX_RBUFFER_H__ */
size_t tbox_rbuffer_read(tbox_rbuffer_t *rbuffer, void *data, size_t count)
读取并移除元素。
size_t tbox_rbuffer_skip(tbox_rbuffer_t *rbuffer, size_t count)
跳过并移除元素。
size_t tbox_rbuffer_write(tbox_rbuffer_t *rbuffer, const void *data, size_t count)
写入元素。
void tbox_rbuffer_reset_read(tbox_rbuffer_t *rbuffer)
丢弃当前所有可读数据。
size_t tbox_rbuffer_capacity(const tbox_rbuffer_t *rbuffer)
获取环形缓冲区容量。
bool tbox_rbuffer_is_full(const tbox_rbuffer_t *rbuffer)
判断环形缓冲区是否已满。
bool tbox_rbuffer_is_empty(const tbox_rbuffer_t *rbuffer)
判断环形缓冲区是否为空。
int tbox_rbuffer_init(tbox_rbuffer_t *rbuffer, void *buffer, size_t buffer_size, size_t element_size)
初始化环形缓冲区。
size_t tbox_rbuffer_element_size(const tbox_rbuffer_t *rbuffer)
获取单个元素大小。
void tbox_rbuffer_reset(tbox_rbuffer_t *rbuffer)
清空环形缓冲区。
size_t tbox_rbuffer_peek(const tbox_rbuffer_t *rbuffer, void *data, size_t count)
预读取元素但不移除。
size_t tbox_rbuffer_avail(const tbox_rbuffer_t *rbuffer)
获取当前可写元素数量。
size_t tbox_rbuffer_len(const tbox_rbuffer_t *rbuffer)
获取当前可读元素数量。
bool tbox_rbuffer_initialized(const tbox_rbuffer_t *rbuffer)
判断环形缓冲区是否已初始化。
环形缓冲区控制块。
Definition rbuffer.h:32
size_t element_size
单个元素大小,单位为字节。
Definition rbuffer.h:36
void * buffer
外部数据缓冲区。
Definition rbuffer.h:37
size_t read_pos
读取位置计数。
Definition rbuffer.h:34
size_t write_pos
写入位置计数。
Definition rbuffer.h:33
size_t capacity
可容纳的元素数量。
Definition rbuffer.h:35