1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-06 23:02:42 +02:00
audacity/src/FileIO.cpp
Paul Licameli 5e7d41ec07 Each .cpp/.mm file includes corresponding header before any other...
... except Audacity.h

This forces us to make each header contain all forward declarations or nested
headers that it requires, rather than depend on context.
2019-03-17 22:54:52 -04:00

85 lines
1.7 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
FileIO.cpp
Leland Lucius
**********************************************************************/
#include "Audacity.h"
#include "FileIO.h"
#include <wx/defs.h>
#include <wx/crt.h>
#include <wx/filename.h>
#include <wx/wfstream.h>
FileIO::FileIO(const wxString & name, FileIOMode mode)
: mName(name),
mMode(mode),
mOpen(false)
{
wxString scheme;
if (mMode == FileIO::Input) {
mInputStream = std::make_unique<wxFFileInputStream>(mName);
if (mInputStream == NULL || !mInputStream->IsOk()) {
wxPrintf(wxT("Couldn't get input stream: %s\n"), name);
return;
}
}
else {
mOutputStream = std::make_unique<wxFFileOutputStream>(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);
}