/********************************************************************** Audacity: A Digital Audio Editor FileIO.cpp Leland Lucius **********************************************************************/ #include "Audacity.h" #include "FileIO.h" #include #include #include #include FileIO::FileIO(const wxString & name, FileIOMode mode) : mName(name), mMode(mode), mOpen(false) { wxString scheme; if (mMode == FileIO::Input) { mInputStream = std::make_unique(mName); if (mInputStream == NULL || !mInputStream->IsOk()) { wxPrintf(wxT("Couldn't get input stream: %s\n"), name); return; } } else { mOutputStream = std::make_unique(mName); if (mOutputStream == NULL || !mOutputStream->IsOk()) { wxPrintf(wxT("Couldn't get output stream: %s\n"), name); return; } } mOpen = true; } FileIO::~FileIO() { Close(); } bool FileIO::IsOpened() { return mOpen; } bool FileIO::Close() { bool success = true; if (mOutputStream) { // mOutputStream->Sync() returns void! Rrr! success = mOutputStream->GetFile()->Flush() && mOutputStream->Close(); mOutputStream.reset(); } mInputStream.reset(); mOpen = false; return success; } wxInputStream & FileIO::Read(void *buf, size_t size) { if (mInputStream == NULL) { return *mInputStream; } return mInputStream->Read(buf, size); } wxOutputStream & FileIO::Write(const void *buf, size_t size) { if (mOutputStream == NULL) { return *mOutputStream; } return mOutputStream->Write(buf, size); }