mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 21:25:04 -07:00
0ef80b9c2b
Extract the RBuffer class from rstream.c and reimplement it as a ring buffer, a more efficient version that doesn't need to relocate memory. The old rbuffer_read/rbuffer_write interfaces are kept for simple reading/writing, and the RBUFFER_UNTIL_{FULL,EMPTY} macros are introduced to hide wrapping logic when more control is required(such as passing the buffer pointer to a library function that writes directly to the pointer) Also add a basic infrastructure for writing helper C files that are only compiled in the unit test library, and use this to write unit tests for RBuffer which contains some macros that can't be accessed directly by luajit. Helped-by: oni-link <knil.ino@gmail.com> Reviewed-by: oni-link <knil.ino@gmail.com> Reviewed-by: Scott Prager <splinterofchaos@gmail.com> Reviewed-by: Justin M. Keyes <justinkz@gmail.com> Reviewed-by: Michael Reed <m.reed@mykolab.com>
10 lines
352 B
C
10 lines
352 B
C
#include "nvim/rbuffer.h"
|
|
|
|
typedef void(*each_ptr_cb)(char *ptr, size_t cnt);
|
|
typedef void(*each_cb)(char c, size_t i);
|
|
|
|
void ut_rbuffer_each_read_chunk(RBuffer *buf, each_ptr_cb cb);
|
|
void ut_rbuffer_each_write_chunk(RBuffer *buf, each_ptr_cb cb);
|
|
void ut_rbuffer_each(RBuffer *buf, each_cb cb);
|
|
void ut_rbuffer_each_reverse(RBuffer *buf, each_cb cb);
|