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