Ticket #3262: rename variables.
[midnight-commander.git] / src / editor / editbuffer.h
blob33fa6acadbf643b2f20448c5e1ffefb5f7cc8f7c
1 /** \file
2 * \brief Header: text keep buffer for WEdit
3 */
5 #ifndef MC__EDIT_BUFFER_H
6 #define MC__EDIT_BUFFER_H
8 /*** typedefs(not structures) and defined constants **********************************************/
10 /*** enums ***************************************************************************************/
12 /*** structures declarations (and typedefs of structures)*****************************************/
14 typedef struct edit_buffer_struct
16 off_t curs1; /* position of the cursor from the beginning of the file. */
17 off_t curs2; /* position from the end of the file */
18 GPtrArray *b1; /* all data up to curs1 */
19 GPtrArray *b2; /* all data from end of file down to curs2 */
20 off_t size; /* file size */
21 long lines; /* total lines in the file */
22 long curs_line; /* line number of the cursor. */
23 } edit_buffer_t;
25 typedef struct edit_buffer_read_file_status_msg_struct
27 simple_status_msg_t status_msg; /* base class */
29 gboolean first;
30 edit_buffer_t *buf;
31 off_t loaded;
32 } edit_buffer_read_file_status_msg_t;
34 /*** global variables defined in .c file *********************************************************/
36 /*** declarations of public functions ************************************************************/
38 void edit_buffer_init (edit_buffer_t * buf, off_t size);
39 void edit_buffer_clean (edit_buffer_t * buf);
41 int edit_buffer_get_byte (const edit_buffer_t * buf, off_t byte_index);
42 #ifdef HAVE_CHARSET
43 int edit_buffer_get_utf (const edit_buffer_t * buf, off_t byte_index, int *char_length);
44 int edit_buffer_get_prev_utf (const edit_buffer_t * buf, off_t byte_index, int *char_length);
45 #endif
46 long edit_buffer_count_lines (const edit_buffer_t * buf, off_t first, off_t last);
47 off_t edit_buffer_get_bol (const edit_buffer_t * buf, off_t current);
48 off_t edit_buffer_get_eol (const edit_buffer_t * buf, off_t current);
49 GString *edit_buffer_get_word_from_pos (const edit_buffer_t * buf, off_t start_pos, off_t * start,
50 gsize * cut);
52 void edit_buffer_insert (edit_buffer_t * buf, int c);
53 void edit_buffer_insert_ahead (edit_buffer_t * buf, int c);
54 int edit_buffer_delete (edit_buffer_t * buf);
55 int edit_buffer_backspace (edit_buffer_t * buf);
57 off_t edit_buffer_move_forward (const edit_buffer_t * buf, off_t current, long lines, off_t upto);
58 off_t edit_buffer_move_backward (const edit_buffer_t * buf, off_t current, long lines);
60 off_t edit_buffer_read_file (edit_buffer_t * buf, int fd, off_t size,
61 edit_buffer_read_file_status_msg_t * sm, gboolean * aborted);
62 off_t edit_buffer_write_file (edit_buffer_t * buf, int fd);
64 int edit_buffer_calc_percent (const edit_buffer_t * buf, off_t offset);
66 /*** inline functions ****************************************************************************/
68 static inline int
69 edit_buffer_get_current_byte (const edit_buffer_t * buf)
71 return edit_buffer_get_byte (buf, buf->curs1);
74 /* --------------------------------------------------------------------------------------------- */
76 static inline int
77 edit_buffer_get_previous_byte (const edit_buffer_t * buf)
79 return edit_buffer_get_byte (buf, buf->curs1 - 1);
82 /* --------------------------------------------------------------------------------------------- */
83 /**
84 * Get "begin-of-line" offset of current line
86 * @param buf editor buffer
88 * @return index of first char of current line
91 static inline off_t
92 edit_buffer_get_current_bol (const edit_buffer_t * buf)
94 return edit_buffer_get_bol (buf, buf->curs1);
97 /* --------------------------------------------------------------------------------------------- */
98 /**
99 * Get "end-of-line" offset of current line
101 * @param buf editor buffer
103 * @return index of first char of current line + 1
106 static inline off_t
107 edit_buffer_get_current_eol (const edit_buffer_t * buf)
109 return edit_buffer_get_eol (buf, buf->curs1);
112 /* --------------------------------------------------------------------------------------------- */
114 #endif /* MC__EDIT_BUFFER_H */