another update from CVS HEAD, for QA
[alioth/jupp.git] / b.h
1 /*
2  *      Editor engine
3  *      Copyright
4  *              (C) 1992 Joseph H. Allen
5  *
6  *      This file is part of JOE (Joe's Own Editor)
7  */
8 #ifndef _JOE_B_H
9 #define _JOE_B_H 1
10
11 #ifdef EXTERN
12 __IDSTRING(rcsid_b_h, "$MirOS: contrib/code/jupp/b.h,v 1.9 2017/12/07 00:35:13 tg Exp $");
13 #endif
14
15 extern unsigned char stdbuf[stdsiz];
16
17 extern int force;               /* Set to have final '\n' added to file */
18 extern int tabwidth;            /* Default tab width */
19
20 extern VFILE *vmem;             /* Virtual memory file used for buffer system */
21
22 extern const unsigned char *msgs[];
23
24 B *bmk(B *prop);
25 void brm(B *b);
26
27 B *bfind(unsigned char *s);
28 B *bfind_scratch(unsigned char *s);
29 B *bcheck_loaded(unsigned char *s);
30 B *bfind_reload(unsigned char *s);
31
32 P *pdup(P *p);
33 P *pdupown(P *p, P **o);
34 P *poffline(P *p);
35 P *ponline(P *p);
36 B *bonline(B *b);
37 B *boffline(B *b);
38
39 void prm(P *p);
40 P *pset(P *n, P *p);
41
42 P *p_goto_bof(P *p);            /* move cursor to begging of file */
43 P *p_goto_eof(P *p);            /* move cursor to end of file */
44 P *p_goto_bol(P *p);            /* move cursor to begging of line */
45 P *p_goto_eol(P *p);            /* move cursor to end of line */
46
47 P *p_goto_indent(P *p,int c);   /* move cursor to indentation point */
48
49 int pisbof(P *p);
50 int piseof(P *p);
51 int piseol(P *p);
52 int pisbol(P *p);
53 int pisbow(P *p);
54 int piseow(P *p);
55
56 #define piscol(p) ((p)->valcol ? (p)->col : (pfcol(p), (p)->col))
57
58 int pisblank(P *p);
59 int piseolblank(P *p);
60
61 long pisindent(P *p);
62 int pispure(P *p,int c);
63
64 int pnext(P *p);
65 int pprev(P *p);
66
67 int pgetb(P *p);
68 int prgetb(P *p);
69
70 int pgetc(P *p);
71 int prgetc(P *p);
72
73 P *pgoto(P *p, long int loc);
74 P *pfwrd(P *p, long int n);
75 P *pbkwd(P *p, long int n);
76
77 P *pfcol(P *p);
78
79 P *pnextl(P *p);
80 P *pprevl(P *p);
81
82 P *pline(P *p, long int line);
83
84 P *pcolwse(P *p, long int goalcol);
85 P *pcol(P *p, long int goalcol);
86 P *pcoli(P *p, long int goalcol);
87 void pbackws(P *p);
88 void pfill(P *p, long int to, int usetabs);
89
90 P *pfind(P *p, unsigned char *s, int len);
91 P *pifind(P *p, unsigned char *s, int len);
92 P *prfind(P *p, unsigned char *s, int len);
93 P *prifind(P *p, unsigned char *s, int len);
94
95 /* copy text between 'from' and 'to' into new buffer */
96 B *bcpy(P *from, P *to);
97
98 void pcoalesce(P *p);
99
100 void bdel(P *from, P *to);
101
102 /* insert buffer 'b' into another at 'p' */
103 P *binsb(P *p, B *b);
104 /* insert a block 'blk' of size 'amnt' into buffer at 'p' */
105 P *binsm(P *p, unsigned char *blk, int amnt);
106
107 /* insert character 'c' into buffer at 'p' */
108 P *binsc(P *p, int c);
109
110 /* insert byte 'c' into buffer at at 'p' */
111 P *binsbyte(P *p, unsigned char c);
112
113 /* insert zero term. string 's' into buffer at 'p' */
114 P *binss(P *p, unsigned char *s);
115
116 /* B *bload(char *s);
117  * Load a file into a new buffer
118  *
119  * Returns with errno set to 0 for success,
120  * -1 for new file (file doesn't exist)
121  * -2 for read error
122  * -3 for seek error
123  * -4 for open error
124  */
125 B *bload(unsigned char *s);
126 B *bread(int fi, long int max);
127 B *borphan(void);
128
129 /* Save 'size' bytes beginning at 'p' into file with name in 's' */
130 int bsave(P *p, unsigned char *s, long int size,int flag);
131 int bsavefd(P *p, int fd, long int size);
132
133 unsigned char *parsens(unsigned char *s, long int *skip, long int *amnt);
134
135 /* Get byte at pointer or return NO_MORE_DATA if pointer is at end of buffer */
136 int brc(P *p);
137
138 /* Get character at pointer or return NO_MORE_DATA if pointer is at end of buffer */
139 int brch(P *p);
140
141 /* Copy 'size' bytes from a buffer beginning at p into block 'blk' */
142 unsigned char *brmem(P *p, unsigned char *blk, int size);
143
144 /* Copy 'size' bytes from a buffer beginning at p into a zero-terminated
145  * C-string in an malloc block.
146  */
147 unsigned char *brs(P *p, int size);
148
149 /* Copy 'size' bytes from a buffer beginning at p into a variable length string. */
150 unsigned char *brvs(P *p, int size);
151
152 /* Copy line into buffer.  Maximum of size bytes will be copied.  Buffer needs
153    to be one bigger for NIL */
154 unsigned char *brzs(P *p, unsigned char *buf, int size);
155
156 B *bnext(void);
157 B *bprev(void);
158
159 #define error berror
160 extern int berror;
161
162 unsigned char **getbufs(void);
163
164 #endif