Add wxGetFileType and IsSeekable

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31924 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Michael Wetherell
2005-02-11 12:39:03 +00:00
parent af44de02ae
commit 3c70014d96
21 changed files with 453 additions and 73 deletions

View File

@@ -96,6 +96,8 @@ public:
bool Error() const { return ferror(m_fp) != 0; }
// get the file name
const wxString& GetName() const { return m_name; }
// type such as disk or pipe
wxFileTypeEnum GetFileType() const { return wxGetFileType(m_fp); }
// dtor closes the file if opened
~wxFFile() { Close(); }

View File

@@ -125,6 +125,8 @@ public:
bool Eof() const;
// has an error occured?
bool Error() const { return m_error; }
// type such as disk or pipe
wxFileTypeEnum GetFileType() const { return wxGetFileType(m_fd); }
// dtor closes the file if opened
~wxFile() { Close(); }

View File

@@ -122,6 +122,14 @@ enum wxSeekMode
wxFromEnd
};
enum wxFileTypeEnum
{
wxFILE_TYPE_UNKNOWN,
wxFILE_TYPE_DISK, // a file supporting seeking to arbitrary offsets
wxFILE_TYPE_TERMINAL, // a tty
wxFILE_TYPE_PIPE // a pipe
};
// ----------------------------------------------------------------------------
// declare our versions of low level file functions: some compilers prepend
// underscores to the usual names, some also have Unicode versions of them
@@ -140,6 +148,7 @@ enum wxSeekMode
int wxWrite(int fd, const void *buf, unsigned int count);
int wxEof(int fd);
wxFileOffset wxSeek(int fd, wxFileOffset offset, int origin);
inline HANDLE wxGetOSFHandle(int fd) { return (HANDLE)fd; }
#define wxLSeek wxSeek
wxFileOffset wxTell(int fd);
@@ -343,6 +352,11 @@ enum wxSeekMode
#endif
#endif // platforms
#if defined __WXMSW__ && !defined __WXWINCE__
// get the HANDLE associated with a file descriptor
inline HANDLE wxGetOSFHandle(int fd) { return (HANDLE)_get_osfhandle(fd); }
#endif
#if defined(__VISAGECPP__) && __IBMCPP__ >= 400
//
// VisualAge C++ V4.0 cannot have any external linkage const decs
@@ -449,6 +463,10 @@ WXDLLIMPEXP_BASE bool wxMkdir(const wxString& dir, int perm = 0777);
// Remove directory. Flags reserved for future use.
WXDLLIMPEXP_BASE bool wxRmdir(const wxString& dir, int flags = 0);
// Return the type of an open file
WXDLLIMPEXP_BASE wxFileTypeEnum wxGetFileType(int fd);
inline wxFileTypeEnum wxGetFileType(FILE *fp) { return wxGetFileType(fileno(fp)); }
// compatibility defines, don't use in new code
#define wxDirExists wxPathExists

View File

@@ -23,6 +23,7 @@ public:
virtual ~wxMemoryInputStream();
virtual wxFileOffset GetLength() const { return m_length; }
virtual bool Eof() const;
virtual bool IsSeekable() const { return true; }
char Peek();
@@ -51,6 +52,7 @@ public:
wxMemoryOutputStream(void *data = NULL, size_t length = 0);
virtual ~wxMemoryOutputStream();
virtual wxFileOffset GetLength() const { return m_o_streambuf->GetLastAccess(); }
virtual bool IsSeekable() const { return true; }
size_t CopyTo(void *buffer, size_t len) const;

View File

@@ -85,6 +85,9 @@ public:
virtual size_t GetSize() const;
virtual wxFileOffset GetLength() const { return wxInvalidOffset; }
// returns true if the streams supports seeking to arbitrary offsets
virtual bool IsSeekable() const { return false; }
#if WXWIN_COMPATIBILITY_2_2
// deprecated, for compatibility only
wxDEPRECATED( wxStreamError LastError() const );
@@ -479,6 +482,7 @@ public:
// Position functions
wxFileOffset SeekI(wxFileOffset pos, wxSeekMode mode = wxFromStart);
wxFileOffset TellI() const;
bool IsSeekable() const { return m_parent_i_stream->IsSeekable(); }
// the buffer given to the stream will be deleted by it
void SetInputStreamBuffer(wxStreamBuffer *buffer);
@@ -514,6 +518,7 @@ public:
// Position functions
wxFileOffset SeekO(wxFileOffset pos, wxSeekMode mode = wxFromStart);
wxFileOffset TellO() const;
bool IsSeekable() const { return m_parent_o_stream->IsSeekable(); }
void Sync();
bool Close();

View File

@@ -41,6 +41,7 @@ public:
wxFileOffset GetLength() const;
bool Ok() const { return m_file->IsOpened(); }
bool IsSeekable() const { return m_file->GetFileType() == wxFILE_TYPE_DISK; }
protected:
wxFileInputStream();
@@ -69,6 +70,7 @@ public:
wxFileOffset GetLength() const;
bool Ok() const { return m_file->IsOpened(); }
bool IsSeekable() const { return m_file->GetFileType() == wxFILE_TYPE_DISK; }
protected:
wxFileOutputStream();
@@ -109,6 +111,7 @@ public:
wxFileOffset GetLength() const;
bool Ok() const { return m_file->IsOpened(); }
bool IsSeekable() const { return m_file->GetFileType() == wxFILE_TYPE_DISK; }
protected:
wxFFileInputStream();
@@ -137,6 +140,7 @@ public:
wxFileOffset GetLength() const;
bool Ok() const { return m_file->IsOpened(); }
bool IsSeekable() const { return m_file->GetFileType() == wxFILE_TYPE_DISK; }
protected:
wxFFileOutputStream();