TBUF(3)TBUF(3)NAME
tbuf_create, tbuf_destroy, tbuf_copy, tbuf_cat, tbuf_length, tbuf_chars
- manipulate text editor buffer
SYNOPSIS
#include <publib.h>
Tbuf *tbuf_create(const char *chars, size_t len);
void tbuf_destroy(Tbuf *tbuf);
Tbuf *tbuf_copy(Tbuf *tbuf, size_t offset, size_tlen);
Tbuf *tbuf_cat(Tbuf *tbuf, Tbuf * tbuf);
size_t tbuf_length(Tbuf *tbuf);
void tbuf_chars(char *chars, Tbuf *tbuf, size_t offset, size_t len);
DESCRIPTION
These routines create and manipulate simple text editor buffers, which
can also be thought of as arbitrarily large text strings. The buffers
are one-dimensional (i.e., not automatically divided into lines), and
are indexed with character offsets. They are 8-bit and binary clean,
i.e., they may contain any 8-bit characters, including the zero byte
('\0').
tbuf_create creates a buffer from a C character array, and tbuf_destroy
destroys it. Once it's created, a buffer may not be modified.
Instead, a new buffer needs to be created, using tbuf_cat and
tbuf_copy. They create the new buffer so that it shares as much memory
as possible with the old buffer, so the immutability does not necessar‐
ily waste memory much. By never changing a buffer, it is rather simple
to implement undo and redo: you only need to keep a list of buffers and
display the suitable one to the user. The caller should remember to
call tbuf_destroy for unnecessary buffers, of course.
tbuf_length returns the number of characters in the buffer. tbuf_copy
copies part of a buffer into a C character array. The array is not
zero-terminated; the caller must do it himself.
RETURN VALUE
tbuf_create, tbuf_copy, and tbuf_cat return a pointer to the new buf‐
fer, or NULL if the operation failed.
tbuf_length returns the number of characters in the buffer.
tbuf_destroy and tbuf_chars return nothing and cannot fail.
SEE ALSOpublib(3), sbuf(3)AUTHOR
Lars Wirzenius, liw@iki.fi.
TBUF(3)