1 #ifndef INCLUDED_FILEIO_H 2 #define INCLUDED_FILEIO_H 3 4 #include <string> 5 #include <cstdio> 6 7 #include <sys/types.h> /* off_t */ 8 9 /** 10 * Interface for blocking file input/output with buffering 11 */ 12 class ECA_FILE_IO { 13 public: 14 ~ECA_FILE_IO(void)15 virtual ~ECA_FILE_IO(void) { } 16 17 // ----- 18 // Open/close routines 19 20 virtual void open_file(const std::string& fname, 21 const std::string& fmode) = 0; 22 virtual void open_stdin(void) = 0; 23 virtual void open_stdout(void) = 0; 24 virtual void open_stderr(void) = 0; 25 virtual void close_file(void) = 0; 26 27 // ---- 28 // Normal file operations 29 30 virtual void read_to_buffer(void* obuf, off_t bytes) = 0; 31 virtual void write_from_buffer(void* obuf, off_t bytes) = 0; 32 33 virtual void set_file_position(off_t newpos) = 0; 34 virtual void set_file_position_advance(off_t fw) = 0; 35 virtual void set_file_position_end(void) = 0; 36 virtual off_t get_file_position(void) const = 0; 37 virtual off_t get_file_length(void) const = 0; 38 39 // ----- 40 // Status 41 42 virtual bool is_file_ready(void) const = 0; 43 virtual bool is_file_error(void) const = 0; 44 virtual off_t file_bytes_processed(void) const = 0; 45 virtual const std::string& file_mode(void) const = 0; 46 47 }; 48 49 #endif 50