diff options
| author | Albert Cervin <albert@acervin.com> | 2023-04-06 23:23:46 +0200 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2023-05-01 22:19:14 +0200 |
| commit | a123725a12e948d78badb2cb686d38548f1c633b (patch) | |
| tree | c92c46134ef5536fbbf3bf08983c4f0dea1aaf58 /src/dged/buffers.c | |
| parent | b5ed4cf757afc50afb6ac499eee7b87a2648fa4c (diff) | |
| download | dged-a123725a12e948d78badb2cb686d38548f1c633b.tar.gz dged-a123725a12e948d78badb2cb686d38548f1c633b.tar.xz dged-a123725a12e948d78badb2cb686d38548f1c633b.zip | |
Implement window handling
Also implement searching.
fix undo boundaries
when it checked for other save point, it used && instead of == which
caused it to overwrite other types.
Fix bytes vs chars bug in text_get_region
Diffstat (limited to 'src/dged/buffers.c')
| -rw-r--r-- | src/dged/buffers.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/dged/buffers.c b/src/dged/buffers.c new file mode 100644 index 0000000..38b51b7 --- /dev/null +++ b/src/dged/buffers.c @@ -0,0 +1,43 @@ +#include "buffers.h" +#include "buffer.h" + +#include <stdlib.h> +#include <string.h> + +void buffers_init(struct buffers *buffers, uint32_t initial_capacity) { + buffers->buffers = calloc(initial_capacity, sizeof(struct buffer)); + buffers->nbuffers = 0; + buffers->capacity = initial_capacity; +} + +struct buffer *buffers_add(struct buffers *buffers, struct buffer buffer) { + if (buffers->nbuffers == buffers->capacity) { + buffers->capacity *= 2; + buffers->buffers = + realloc(buffers->buffers, sizeof(struct buffer) * buffers->capacity); + } + + buffers->buffers[buffers->nbuffers] = buffer; + ++buffers->nbuffers; + + return &buffers->buffers[buffers->nbuffers - 1]; +} + +struct buffer *buffers_find(struct buffers *buffers, const char *name) { + for (uint32_t bufi = 0; bufi < buffers->nbuffers; ++bufi) { + if (strcmp(name, buffers->buffers[bufi].name) == 0) { + return &buffers->buffers[bufi]; + } + } + + return NULL; +} + +void buffers_destroy(struct buffers *buffers) { + for (uint32_t bufi = 0; bufi < buffers->nbuffers; ++bufi) { + buffer_destroy(&buffers->buffers[bufi]); + } + + buffers->nbuffers = 0; + free(buffers->buffers); +} |
