+};
+
+// ----------------------------------------------------------------------------
+// declare our versions of low level file functions: some compilers prepend
+// underscores to the usual names, some also have Unicode versions of them
+// ----------------------------------------------------------------------------
+
+// Wrappers around Win32 api functions like CreateFile, ReadFile and such
+// Implemented in filefnwce.cpp
+#if defined( __WINCE__)
+ typedef __int64 wxFileOffset;
+ #define wxFileOffsetFmtSpec _("I64")
+ int wxOpen(const wxChar *filename, int oflag, int WXUNUSED(pmode));
+ int wxAccess(const wxChar *name, int WXUNUSED(how));
+ int wxClose(int fd);
+ int wxFsync(int WXUNUSED(fd));
+ int wxRead(int fd, void *buf, unsigned int count);
+ int wxWrite(int fd, const void *buf, unsigned int count);
+ int wxEof(int fd);
+ wxFileOffset wxSeek(int fd, wxFileOffset offset, int origin);
+ #define wxLSeek wxSeek
+ wxFileOffset wxTell(int fd);
+
+ #if wxUSE_UNICODE
+ #if wxUSE_UNICODE_MSLU
+ #define wxMkDir wxMSLU__wmkdir
+ #define wxRmDir wxMSLU__wrmdir
+ #define wxStat wxMSLU__wstat
+ #else
+ #define wxMkDir _wmkdir
+ #define wxRmDir _wrmdir
+ #define wxStat _wstat
+ #endif
+ #else // !wxUSE_UNICODE
+ #define wxMkDir _mkdir
+ #ifdef __WATCOMC__
+ #define wxRmDir rmdir
+ #else
+ #define wxRmDir _rmdir
+ #endif
+ #define wxStat _stat
+ #endif
+ #define wxStructStat struct _stat
+
+// Microsoft compiler loves underscores, feed them to it
+#elif defined( __VISUALC__ ) \
+ || ( defined(__MINGW32__) && !defined(__WINE__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \
+ || ( defined(__MWERKS__) && defined(__WXMSW__) ) \
+ || ( defined(__DMC__) && defined(__WXMSW__) ) \
+ || ( defined(__WATCOMC__) && defined(__WXMSW__) )
+
+ // Not all of the Win32 compilers do have huge file support, for example
+ // the Digitalmars compiler does not have huge file size support
+ #include "wx/msw/private.h"
+
+ #undef __HUGEFILES_SUPPORTED
+ #if _INTEGRAL_MAX_BITS >= 64 && !defined(__DMC__)
+ #define __HUGEFILES_SUPPORTED 1
+ #else
+ #define __HUGEFILES_SUPPORTED 0
+ #endif
+
+ // functions
+ #if defined(__BORLANDC__) || defined(__WATCOMC__)
+ #define _tell tell
+ #endif
+
+ #if __HUGEFILES_SUPPORTED
+ typedef wxLongLong_t wxFileOffset;
+ #define wxFileOffsetFmtSpec wxLongLongFmtSpec
+ #else
+ typedef off_t wxFileOffset;
+ #define wxFileOffsetFmtSpec _("")
+ #endif
+
+ #define wxClose _close
+
+ #if defined(__MWERKS__)
+ #if __MSL__ >= 0x6000
+ #define wxRead _read(fd, (void *)buf, nCount)
+ #define wxWrite _write(fd, (void *)buf, nCount)
+ #else
+ #define wxRead _read(fd, (const char *)buf, nCount)
+ #define wxWrite _write(fd, (const char *)buf, nCount)
+ #endif
+ #else
+ #ifdef __DMC__
+ #define wxRead ::read
+ #define wxWrite ::write
+ #else
+ #define wxRead _read
+ #define wxWrite _write
+ #endif
+ #endif
+ #if __HUGEFILES_SUPPORTED
+ #define wxSeek _lseeki64
+ #define wxLseek _lseeki64
+ #define wxTell _telli64
+ #else
+ #define wxSeek _lseek
+ #define wxLseek _lseek
+ #define wxTell _tell
+ #endif
+ #define wxFsync _commit
+ #define wxEof _eof
+
+ #if wxUSE_UNICODE
+ #if wxUSE_UNICODE_MSLU
+ #define wxOpen wxMSLU__wopen
+
+ #define wxAccess wxMSLU__waccess
+ #define wxMkDir wxMSLU__wmkdir
+ #define wxRmDir wxMSLU__wrmdir
+ #if __HUGEFILES_SUPPORTED
+ #define wxStat wxMSLU__wstati64
+ #else
+ #define wxStat wxMSLU__wstat
+ #endif
+ #else
+ #define wxOpen _wopen
+ #define wxAccess _waccess
+ #define wxMkDir _wmkdir
+ #define wxRmDir _wrmdir
+ #if __HUGEFILES_SUPPORTED
+ #define wxStat _wstati64
+ #else
+ #define wxStat _wstat
+ #endif
+ #endif
+ #else // !wxUSE_UNICODE
+ #ifdef __BORLANDC__
+ #define wxOpen open
+ #else
+ #define wxOpen _open
+ #endif
+ #define wxAccess _access
+ #define wxMkDir _mkdir
+ #ifdef __WATCOMC__
+ #define wxRmDir rmdir
+ #else
+ #define wxRmDir _rmdir
+ #endif
+ #if __HUGEFILES_SUPPORTED
+ #define wxStat _stati64
+ #else
+ #define wxStat _stat
+ #endif
+ #endif
+
+ // types: notice that Watcom is the only compiler to have a wide char
+ // version of struct stat as well as a wide char stat function variant
+ #if __HUGEFILES_SUPPORTED
+ #if wxUSE_UNICODE && defined(__WATCOMC__)
+ #define wxStructStat struct _wstati64
+ #else
+ #define wxStructStat struct _stati64
+ #endif
+ #else
+ #if wxUSE_UNICODE && defined(__WATCOMC__)
+ #define wxStructStat struct _wstat
+ #else
+ #define wxStructStat struct _stat
+ #endif
+ #endif
+
+ // constants (unless already defined by the user code)
+ #if !defined(O_RDONLY) && !defined(__BORLANDC__) && !defined(__WATCOMC__)
+ #define O_RDONLY _O_RDONLY
+ #define O_WRONLY _O_WRONLY
+ #define O_RDWR _O_RDWR
+ #define O_EXCL _O_EXCL
+ #define O_CREAT _O_CREAT
+ #define O_BINARY _O_BINARY
+ #endif
+
+ #if !defined(__BORLANDC__) && !defined(__WATCOMC__)
+ #define S_IFMT _S_IFMT
+ #define S_IFDIR _S_IFDIR
+ #define S_IFREG _S_IFREG
+ #endif // O_RDONLY
+
+ // It's a private define, undefine it so nobody gets tempted to use it
+ #undef __HUGEFILES_SUPPORTED
+#else
+ typedef off_t wxFileOffset;
+ #ifdef _LARGE_FILES
+ #define wxFileOffsetFmtSpec wxLongLongFmtSpec
+ #else
+ #define wxFileOffsetFmtSpec _T("")
+ #endif
+ // functions
+ #define wxClose close
+ #define wxRead ::read
+ #define wxWrite ::write
+ #define wxLseek lseek
+ #define wxSeek lseek
+ #define wxFsync commit
+ #define wxEof eof
+
+ #define wxMkDir mkdir
+ #define wxRmDir rmdir
+
+ #define wxTell(fd) lseek(fd, 0, SEEK_CUR)
+
+ #define wxStructStat struct stat
+
+ #if wxUSE_UNICODE
+ #define wxNEED_WX_UNISTD_H
+ #if defined(__DMC__)
+ typedef unsigned long mode_t;
+ #endif
+ WXDLLIMPEXP_BASE int wxStat( const wxChar *file_name, wxStructStat *buf );
+ WXDLLIMPEXP_BASE int wxAccess( const wxChar *pathname, int mode );
+ WXDLLIMPEXP_BASE int wxOpen( const wxChar *pathname, int flags, mode_t mode );
+ #else
+ #define wxOpen open
+ #define wxStat stat
+ #define wxAccess access
+ #endif
+
+#endif // VC++