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:
@@ -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(); }
|
||||
|
@@ -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(); }
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user