1 #ifndef S_BUFFIO_H
2 #define S_BUFFIO_H
3 
4 #include "coeffs/si_gmp.h"
5 
6 struct s_buff_s
7 {
8     char * buff; // buffer
9     int fd;      // file descrr.
10     int bp;      // current pos. in buff (of the last read char)
11     int end;     // last position in buff
12     int is_eof;
13 };
14 
15 typedef struct s_buff_s * s_buff;
16 
17 struct ip_sring;
18 typedef struct ip_sring *         ring;
19 
20 typedef struct
21 {
22   s_buff f_read;
23   FILE *f_write;
24   ring r;
25   pid_t pid; /* only valid for fork/tcp mode*/
26   int fd_read,fd_write; /* only valid for fork/tcp mode*/
27   char level;
28   char send_quit_at_exit;
29   char quit_sent;
30 
31 } ssiInfo;
32 
33 s_buff s_open(int fd);
34 s_buff s_open_by_name(const char *n);
35 int    s_close(s_buff &f);
36 
37 int s_getc(s_buff F);
38 void s_ungetc(int c, s_buff F);
39 
40 int s_readint(s_buff F);
41 long s_readlong(s_buff F);
42 int s_readbytes(char *buff,int len, s_buff F);
43 void s_readmpz(s_buff F, mpz_ptr a);
44 void s_readmpz_base(s_buff F, mpz_ptr a, int base);
45 int s_isready(s_buff F);
46 int s_iseof(s_buff F);
47 #endif
48