home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / most-3.2 / part01 / buffer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-13  |  2.0 KB  |  67 lines

  1. #ifndef _DAVIS_BUFFER_H_
  2. #define _DAVIS_BUFFER_H_
  3.  
  4. typedef struct
  5.   {
  6.       char file[80];            /* filename */
  7.       unsigned char *beg;       /* beginning of buffer */
  8.       unsigned char *end;       /* end of buffer */
  9.       int mark;                 /* marked line in buffer */
  10.   } Buffer;
  11.  
  12.  
  13. extern int NUM_LINES;
  14. extern Buffer *BUF;
  15. extern unsigned char *BEG, *EOB;
  16. extern unsigned char MINI_BUF[132];
  17. /* The buffer.
  18.  
  19.    The beginning of the first character is at BUF.  The last character
  20.    in the file is located at position EOB-1.  So if we are at position EOB,
  21.    then we can insert a character past the last point.  EOB = BUF + BUF_SIZE;
  22. .
  23. */
  24.   
  25. extern unsigned char *C_POS;
  26. /* 
  27.  *  current position of point.  Considered to be between the previous
  28.  *  character and the next character.  There is no current character.
  29.  *  If we are at the beginning of the buffer BUF, then its value is BUF.
  30.  *  If we are at the end of the buffer it is BUF + BUF_SIZE = EOB.
  31.  */
  32.  
  33. extern int C_LINE;
  34. /* 
  35.  *  Current line number.  If at the beginning of the buffer, it is 1.  If
  36.  *  we are at the last point of the buffer it is the number of lines.
  37.  */
  38.  
  39. /* These two routines do not move the point */  
  40. extern unsigned char *beg_of_line();
  41. extern unsigned char *end_of_line();
  42.  
  43. extern int forward_line(int);
  44. /* This routine moves the point forward n lines. n can be negative. 
  45.    It returns the number moved. */
  46.  
  47. extern void goto_line(int);
  48. /* Move the point somewhere on the nth line of the buffer returning
  49.    C_POS */
  50.  
  51. extern int what_line(unsigned char *);
  52. /* return the line number of position 'argument'. Does not move point */
  53.  
  54. /* count the number of lines in the region delimited by beg and end.
  55.    Counts lines from beg up to end but does not count end.
  56.    Does not move point. */
  57. extern int count_lines(unsigned char *, unsigned char *);
  58. extern int extract_line(unsigned char **, unsigned char **);
  59.  
  60. extern Buffer *switch_to_buffer(Buffer *);
  61. extern void delete_buffer(Buffer *);
  62. extern Buffer *create_buffer(char *);
  63.  
  64.  
  65. #endif
  66.   
  67.