/////////////////////////////////////////////////////////////////////////////
-// Name: src/common/fstream.cpp
+// Name: src/common/wfstream.cpp
// Purpose: "File stream" classes
// Author: Julian Smart
// Modified by:
return m_file->Tell();
}
-bool wxFileInputStream::IsOk() const
-{
- return (wxStreamBase::IsOk() && m_file->IsOpened());
+bool wxFileInputStream::IsOk() const
+{
+ return wxInputStream::IsOk() && m_file->IsOpened();
}
// ----------------------------------------------------------------------------
return m_file->Length();
}
-bool wxFileOutputStream::IsOk() const
-{
- return (wxStreamBase::IsOk() && m_file->IsOpened());
+bool wxFileOutputStream::IsOk() const
+{
+ return wxOutputStream::IsOk() && m_file->IsOpened();
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
wxFileStream::wxFileStream(const wxString& fileName)
- : wxFileInputStream(fileName)
+ : wxFileInputStream(),
+ wxFileOutputStream()
{
- wxFileOutputStream::m_file = wxFileInputStream::m_file;
+ wxFileOutputStream::m_file =
+ wxFileInputStream::m_file = new wxFile(fileName, wxFile::read_write);
+
+ // this is a bit ugly as streams are symmetric but we still have to delete
+ // the file we created above exactly once so we decide to (arbitrarily) do
+ // it in wxFileInputStream
+ wxFileInputStream::m_file_destroy = true;
}
-#endif //wxUSE_FILE
+bool wxFileStream::IsOk() const
+{
+ return wxFileOutputStream::IsOk() && wxFileInputStream::IsOk();
+}
+
+#endif // wxUSE_FILE
#if wxUSE_FFILE
// ----------------------------------------------------------------------------
wxFFileInputStream::wxFFileInputStream(const wxString& fileName,
- const wxChar *mode)
+ const wxString& mode)
: wxInputStream()
{
m_file = new wxFFile(fileName, mode);
return m_file->Tell();
}
-bool wxFFileInputStream::IsOk() const
-{
- return (wxStreamBase::IsOk() && m_file->IsOpened());
+bool wxFFileInputStream::IsOk() const
+{
+ return wxStreamBase::IsOk() && m_file->IsOpened();
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
wxFFileOutputStream::wxFFileOutputStream(const wxString& fileName,
- const wxChar *mode)
+ const wxString& mode)
{
m_file = new wxFFile(fileName, mode);
m_file_destroy = true;
return m_file->Length();
}
-bool wxFFileOutputStream::IsOk() const
-{
- return (wxStreamBase::IsOk() && m_file->IsOpened());
+bool wxFFileOutputStream::IsOk() const
+{
+ return wxStreamBase::IsOk() && m_file->IsOpened();
}
// ----------------------------------------------------------------------------
// wxFFileStream
// ----------------------------------------------------------------------------
-wxFFileStream::wxFFileStream(const wxString& fileName)
- : wxFFileInputStream(fileName)
+wxFFileStream::wxFFileStream(const wxString& fileName, const wxString& mode)
+ : wxFFileInputStream(),
+ wxFFileOutputStream()
+{
+ wxASSERT_MSG( mode.find_first_of('+') != wxString::npos,
+ "must be opened in read-write mode for this class to work" );
+
+ wxFFileOutputStream::m_file =
+ wxFFileInputStream::m_file = new wxFFile(fileName, mode);
+
+ // see comment in wxFileStream ctor
+ wxFFileInputStream::m_file_destroy = true;
+}
+
+bool wxFFileStream::IsOk() const
{
- wxFFileOutputStream::m_file = wxFFileInputStream::m_file;
+ return wxFFileOutputStream::IsOk() && wxFFileInputStream::IsOk();
}
#endif //wxUSE_FFILE