root/src/editor/editbuffer.h

/* [previous][next][first][last][top][bottom][index][help]  */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. edit_buffer_get_current_byte
  2. edit_buffer_get_previous_byte
  3. edit_buffer_get_current_bol
  4. edit_buffer_get_current_eol

   1 /** \file
   2  *  \brief Header: text keep buffer for WEdit
   3  */
   4 
   5 #ifndef MC__EDIT_BUFFER_H
   6 #define MC__EDIT_BUFFER_H
   7 
   8 /*** typedefs(not structures) and defined constants **********************************************/
   9 
  10 /*** enums ***************************************************************************************/
  11 
  12 /*** structures declarations (and typedefs of structures)*****************************************/
  13 
  14 typedef struct edit_buffer_struct
  15 {
  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;
  24 
  25 typedef struct edit_buffer_read_file_status_msg_struct
  26 {
  27     simple_status_msg_t status_msg;     /* base class */
  28 
  29     gboolean first;
  30     edit_buffer_t *buf;
  31     off_t loaded;
  32 } edit_buffer_read_file_status_msg_t;
  33 
  34 /*** global variables defined in .c file *********************************************************/
  35 
  36 /*** declarations of public functions ************************************************************/
  37 
  38 void edit_buffer_init (edit_buffer_t * buf, off_t size);
  39 void edit_buffer_clean (edit_buffer_t * buf);
  40 
  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);
  51 gboolean edit_buffer_find_word_start (const edit_buffer_t * buf, off_t * word_start,
  52                                       gsize * word_len);
  53 
  54 void edit_buffer_insert (edit_buffer_t * buf, int c);
  55 void edit_buffer_insert_ahead (edit_buffer_t * buf, int c);
  56 int edit_buffer_delete (edit_buffer_t * buf);
  57 int edit_buffer_backspace (edit_buffer_t * buf);
  58 
  59 off_t edit_buffer_get_forward_offset (const edit_buffer_t * buf, off_t current, long lines,
  60                                       off_t upto);
  61 off_t edit_buffer_get_backward_offset (const edit_buffer_t * buf, off_t current, long lines);
  62 
  63 off_t edit_buffer_read_file (edit_buffer_t * buf, int fd, off_t size,
  64                              edit_buffer_read_file_status_msg_t * sm, gboolean * aborted);
  65 off_t edit_buffer_write_file (edit_buffer_t * buf, int fd);
  66 
  67 int edit_buffer_calc_percent (const edit_buffer_t * buf, off_t offset);
  68 
  69 /*** inline functions ****************************************************************************/
  70 
  71 static inline int
  72 edit_buffer_get_current_byte (const edit_buffer_t * buf)
     /* [previous][next][first][last][top][bottom][index][help]  */
  73 {
  74     return edit_buffer_get_byte (buf, buf->curs1);
  75 }
  76 
  77 /* --------------------------------------------------------------------------------------------- */
  78 
  79 static inline int
  80 edit_buffer_get_previous_byte (const edit_buffer_t * buf)
     /* [previous][next][first][last][top][bottom][index][help]  */
  81 {
  82     return edit_buffer_get_byte (buf, buf->curs1 - 1);
  83 }
  84 
  85 /* --------------------------------------------------------------------------------------------- */
  86 /**
  87  * Get "begin-of-line" offset of current line
  88  *
  89  * @param buf editor buffer
  90  *
  91  * @return index of first char of current line
  92  */
  93 
  94 static inline off_t
  95 edit_buffer_get_current_bol (const edit_buffer_t * buf)
     /* [previous][next][first][last][top][bottom][index][help]  */
  96 {
  97     return edit_buffer_get_bol (buf, buf->curs1);
  98 }
  99 
 100 /* --------------------------------------------------------------------------------------------- */
 101 /**
 102  * Get "end-of-line" offset of current line
 103  *
 104  * @param buf editor buffer
 105  *
 106  * @return index of first char of current line + 1
 107  */
 108 
 109 static inline off_t
 110 edit_buffer_get_current_eol (const edit_buffer_t * buf)
     /* [previous][next][first][last][top][bottom][index][help]  */
 111 {
 112     return edit_buffer_get_eol (buf, buf->curs1);
 113 }
 114 
 115 /* --------------------------------------------------------------------------------------------- */
 116 
 117 #endif /* MC__EDIT_BUFFER_H */

/* [previous][next][first][last][top][bottom][index][help]  */