1 /**********************************************************************
2 
3   Audacity: A Digital Audio Editor
4 
5   FileIO.h
6 
7   Leland Lucius
8 
9 **********************************************************************/
10 
11 #ifndef __AUDACITY_FILEIO__
12 #define __AUDACITY_FILEIO__
13 
14 #include <memory>
15 
16 class wxInputStream;
17 class wxOutputStream;
18 class wxFFileOutputStream;
19 class wxFileNameWrapper;
20 
21 class FILES_API FileIO
22 {
23  public:
24    typedef enum FileIOMode
25    {
26       Input,
27       Output
28    } FileIOMode;
29 
30  public:
31    FileIO(const wxFileNameWrapper & name, FileIOMode mode);
32 
33    // Calls Close()
34    ~FileIO();
35 
36    bool IsOpened();
37 
38    bool Close();
39 
40    wxInputStream & Read(void *buffer, size_t size);
41    wxOutputStream & Write(const void *buffer, size_t size);
42 
43  private:
44    FileIOMode mMode;
45    std::unique_ptr<wxInputStream> mInputStream;
46    std::unique_ptr<wxFFileOutputStream> mOutputStream;
47    bool mOpen;
48 };
49 
50 #endif
51