| #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 */ |