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