wxWidgets/interface/wx/wfstream.h
Dummy 3e0780e811 Add wxTempFFile, similar to wxTempFile but using buffered I/O
Also add wxTempFFileOutputStream.

Closes #18673.
2020-02-21 14:52:40 +01:00

393 lines
10 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: wfstream.h
// Purpose: interface of wxTempFileOutputStream
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxTempFileOutputStream
wxTempFileOutputStream is an output stream based on wxTempFile.
It provides a relatively safe way to replace the contents of the
existing file.
@library{wxbase}
@category{streams}
@see wxTempFile
*/
class wxTempFileOutputStream : public wxOutputStream
{
public:
/**
Associates wxTempFileOutputStream with the file to be replaced and opens it.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
Call Commit() or wxOutputStream::Close() to replace the old file and close
this one. Calling Discard() (or allowing the destructor to do it) will
discard the changes.
*/
wxTempFileOutputStream(const wxString& fileName);
/**
Validate changes: deletes the old file of the given name and renames the new
file to the old name. Returns @true if both actions succeeded.
If @false is returned it may unfortunately mean two quite different things: either that
either the old file couldn't be deleted or that the new file couldn't be renamed
to the old name.
*/
virtual bool Commit();
/**
Discard changes: the old file contents are not changed, the temporary file is
deleted.
*/
virtual void Discard();
};
/**
@class wxTempFFileOutputStream
wxTempFFileOutputStream is an output stream based on wxTempFFile.
It provides a relatively safe way to replace the contents of the
existing file.
@since 3.1.4
@library{wxbase}
@category{streams}
@see wxTempFFile
*/
class wxTempFFileOutputStream : public wxOutputStream
{
public:
/**
Associates wxTempFFileOutputStream with the file to be replaced and opens it.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
Call Commit() or wxOutputStream::Close() to replace the old file and close
this one. Calling Discard() (or allowing the destructor to do it) will
discard the changes.
*/
wxTempFFileOutputStream(const wxString& fileName);
/**
Validate changes: deletes the old file of the given name and renames the new
file to the old name. Returns @true if both actions succeeded.
If @false is returned it may unfortunately mean two quite different things: either that
either the old file couldn't be deleted or that the new file couldn't be renamed
to the old name.
*/
virtual bool Commit();
/**
Discard changes: the old file contents are not changed, the temporary file is
deleted.
*/
virtual void Discard();
};
/**
@class wxFFileOutputStream
This class represents data written to a file.
There are actually two such groups of classes: this one is based on wxFFile
whereas wxFileOutputStream is based in the wxFile class.
Note that wxOutputStream::SeekO() can seek beyond the end of the stream
(file) and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@see wxBufferedOutputStream, wxFFileInputStream, wxFileOutputStream, wxFileInputStream
*/
class wxFFileOutputStream : public wxOutputStream
{
public:
/**
Open the given file @a filename with mode @a mode.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
*/
wxFFileOutputStream(const wxString& filename,
const wxString& mode = "wb");
/**
Initializes a file stream in write-only mode using the file I/O object file.
*/
wxFFileOutputStream(wxFFile& file);
/**
Initializes a file stream in write-only mode using the file descriptor fp.
*/
wxFFileOutputStream(FILE* fp);
/**
Destructor.
*/
virtual ~wxFFileOutputStream();
/**
Returns @true if the stream is initialized and ready.
*/
bool IsOk() const;
/**
Returns the underlying file object.
@since 2.9.5
*/
wxFFile* GetFile() const;
};
/**
@class wxFileOutputStream
This class represents data written to a file.
There are actually two such groups of classes: this one is based on wxFile
whereas wxFFileOutputStream is based in the wxFFile class.
Note that wxOutputStream::SeekO() can seek beyond the end of the stream
(file) and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@see wxBufferedOutputStream, wxFileInputStream, wxFFileOutputStream, wxFFileInputStream
*/
class wxFileOutputStream : public wxOutputStream
{
public:
/**
Creates a new file with @a ofileName name and initializes the stream in write-only mode.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
*/
wxFileOutputStream(const wxString& ofileName);
/**
Initializes a file stream in write-only mode using the file I/O object file.
*/
wxFileOutputStream(wxFile& file);
/**
Initializes a file stream in write-only mode using the file descriptor @e fd.
*/
wxFileOutputStream(int fd);
/**
Destructor.
*/
virtual ~wxFileOutputStream();
/**
Returns @true if the stream is initialized and ready.
*/
bool IsOk() const;
/**
Returns the underlying file object.
@since 2.9.5
*/
wxFile* GetFile() const;
};
/**
@class wxFileInputStream
This class represents data read in from a file.
There are actually two such groups of classes: this one is based on wxFile
whereas wxFFileInputStream is based in the wxFFile class.
Note that wxInputStream::SeekI() can seek beyond the end of the stream (file)
and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@see wxBufferedInputStream, wxFileOutputStream, wxFFileOutputStream
*/
class wxFileInputStream : public wxInputStream
{
public:
/**
Opens the specified file using its @a ifileName name in read-only mode.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
*/
wxFileInputStream(const wxString& ifileName);
/**
Initializes a file stream in read-only mode using the file I/O object file.
*/
wxFileInputStream(wxFile& file);
/**
Initializes a file stream in read-only mode using the specified file descriptor.
*/
wxFileInputStream(int fd);
/**
Destructor.
*/
virtual ~wxFileInputStream();
/**
Returns @true if the stream is initialized and ready.
*/
bool IsOk() const;
/**
Returns the underlying file object.
@since 2.9.5
*/
wxFile* GetFile() const;
};
/**
@class wxFFileInputStream
This class represents data read in from a file.
There are actually two such groups of classes: this one is based on wxFFile
whereas wxFileInputStream is based in the wxFile class.
Note that wxInputStream::SeekI() can seek beyond the end of the stream (file)
and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@see wxBufferedInputStream, wxFFileOutputStream, wxFileOutputStream
*/
class wxFFileInputStream : public wxInputStream
{
public:
/**
Opens the specified file using its @a filename name using the specified @a mode.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
*/
wxFFileInputStream(const wxString& filename,
const wxString& mode = "rb");
/**
Initializes a file stream in read-only mode using the file I/O object file.
*/
wxFFileInputStream(wxFFile& file);
/**
Initializes a file stream in read-only mode using the specified file pointer @a fp.
*/
wxFFileInputStream(FILE* fp);
/**
Destructor.
*/
virtual ~wxFFileInputStream();
/**
Returns @true if the stream is initialized and ready.
*/
bool IsOk() const;
/**
Returns the underlying file object.
@since 2.9.5
*/
wxFFile* GetFile() const;
};
/**
@class wxFFileStream
This stream allows both reading from and writing to a file using buffered
STDIO functions.
@library{wxbase}
@category{streams}
@see wxFFileInputStream, wxFFileOutputStream, wxFileStream
*/
class wxFFileStream : public wxFFileInputStream,
public wxFFileOutputStream
{
public:
/**
Initializes a new file stream in the given @a mode using the specified
@a iofileName name.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
*/
wxFFileStream(const wxString& iofileName, const wxString& mode = "w+b");
/**
Returns @true if the stream is initialized and ready.
This method returns @true if the stream can be both read from and
written to.
*/
bool IsOk() const;
};
/**
@class wxFileStream
This class represents data that can be both read from and written to a file.
There are actually two such groups of classes: this one is based on wxFile
whereas wxFFileStream is based in the wxFFile class.
@library{wxbase}
@category{streams}
@see wxFileInputStream, wxFileOutputStream, wxFFileStream
*/
class wxFileStream : public wxFileOutputStream,
public wxFileInputStream
{
public:
/**
Initializes a new file stream in read-write mode using the specified
@a iofileName name.
@warning
You should use IsOk() to verify if the constructor succeeded.
*/
wxFileStream(const wxString& iofileName);
/**
Returns @true if the stream is initialized and ready.
This method returns @true if the stream can be both read from and
written to.
*/
bool IsOk() const;
};