Provided by: publib-dev_0.39-3.1_amd64 bug


       tbuf_create,  tbuf_destroy, tbuf_copy, tbuf_cat, tbuf_length, tbuf_chars - manipulate text
       editor buffer


       #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);


       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

       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 necessarily 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


       tbuf_create, tbuf_copy, and tbuf_cat return a pointer to the new buffer, 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.


       publib(3), sbuf(3)


       Lars Wirzenius,