#ifndef UTIL_LINUX_MBSEDIT_H # define UTIL_LINUX_MBSEDIT_H #include "mbsalign.h" #include "widechar.h" struct mbs_editor { char *buf; /* buffer */ size_t max_bytes; /* size of the buffer */ size_t max_cells; /* maximal allowed number of cells */ size_t cur_cells; /* number of cells to print the buffer */ size_t cur_bytes; /* number of chars in bytes */ size_t cursor; /* cursor position in bytes */ size_t cursor_cells; /* cursor position in cells */ }; enum { MBS_EDIT_LEFT, MBS_EDIT_RIGHT, MBS_EDIT_END, MBS_EDIT_HOME }; struct mbs_editor *mbs_new_edit(char *buf, size_t bufsz, size_t ncells); char *mbs_free_edit(struct mbs_editor *edit); int mbs_edit_goto(struct mbs_editor *edit, int where); int mbs_edit_delete(struct mbs_editor *edit); int mbs_edit_backspace(struct mbs_editor *edit); int mbs_edit_insert(struct mbs_editor *edit, wint_t c); #endif /* UTIL_LINUX_MBSEDIT_H */