1. made CRT wrappers definitions indepenent of wxUSE_UNICODE: both ANSI and Unicode variants are now defined

2. split wxcrt.h into wxcrtbase.h with lowlevel compiler-specific definitions and wxcrt.h with ANSI- and Unicode-compatible wx wrappers


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-06-10 17:14:14 +00:00
parent c475be6dfa
commit 52de37c78f
31 changed files with 1742 additions and 1643 deletions

View File

@@ -95,6 +95,10 @@
// constants
// ----------------------------------------------------------------------------
#if defined(__VISUALC__) || defined(__DIGITALMARS__)
typedef int mode_t;
#endif
#ifdef __WXWINCE__
typedef long off_t;
#else
@@ -139,8 +143,8 @@ enum wxFileKind
#if defined( __WXWINCE__)
typedef __int64 wxFileOffset;
#define wxFileOffsetFmtSpec _("I64")
WXDLLIMPEXP_BASE int wxOpen(const wxChar *filename, int oflag, int WXUNUSED(pmode));
WXDLLIMPEXP_BASE int wxAccess(const wxChar *name, int WXUNUSED(how));
WXDLLIMPEXP_BASE int wxCRT_Open(const wxChar *filename, int oflag, int WXUNUSED(pmode));
WXDLLIMPEXP_BASE int wxCRT_Access(const wxChar *name, int WXUNUSED(how));
WXDLLIMPEXP_BASE int wxClose(int fd);
WXDLLIMPEXP_BASE int wxFsync(int WXUNUSED(fd));
WXDLLIMPEXP_BASE int wxRead(int fd, void *buf, unsigned int count);
@@ -151,9 +155,9 @@ enum wxFileKind
WXDLLIMPEXP_BASE wxFileOffset wxTell(int fd);
// always Unicode under WinCE
#define wxMkDir _wmkdir
#define wxRmDir _wrmdir
#define wxStat _wstat
#define wxCRT_MkDir _wmkdir
#define wxCRT_RmDir _wrmdir
#define wxCRT_Stat _wstat
#define wxStructStat struct _stat
#elif defined(__WXMSW__) && !defined(__WXPALMOS__) && \
( \
@@ -276,53 +280,53 @@ enum wxFileKind
wxPOSIX_STRUCT(stati64) *buffer);
#endif // Windows compilers with MSLU support
#define wxOpen wxMSLU__wopen
#define wxCRT_Open wxMSLU__wopen
#define wxAccess wxMSLU__waccess
#define wxMkDir wxMSLU__wmkdir
#define wxRmDir wxMSLU__wrmdir
#define wxCRT_Access wxMSLU__waccess
#define wxCRT_MkDir wxMSLU__wmkdir
#define wxCRT_RmDir wxMSLU__wrmdir
#ifdef wxHAS_HUGE_FILES
#define wxStat wxMSLU__wstati64
#define wxCRT_Stat wxMSLU__wstati64
#else
#define wxStat wxMSLU__wstat
#define wxCRT_Stat wxMSLU__wstat
#endif
#else // !wxUSE_UNICODE_MSLU
#ifdef __BORLANDC__
#if __BORLANDC__ >= 0x550 && __BORLANDC__ <= 0x551
WXDLLIMPEXP_BASE int wxOpen(const wxChar *pathname,
int flags, mode_t mode);
WXDLLIMPEXP_BASE int wxCRT_Open(const wxChar *pathname,
int flags, mode_t mode);
#else
#define wxOpen _wopen
#define wxCRT_Open _wopen
#endif
#define wxAccess _waccess
#define wxMkDir _wmkdir
#define wxRmDir _wrmdir
#define wxCRT_Access _waccess
#define wxCRT_MkDir _wmkdir
#define wxCRT_RmDir _wrmdir
#ifdef wxHAS_HUGE_FILES
#define wxStat _wstati64
#define wxCRT_Stat _wstati64
#else
#define wxStat _wstat
#define wxCRT_Stat _wstat
#endif
#else
#define wxOpen _wopen
#define wxAccess _waccess
#define wxMkDir _wmkdir
#define wxRmDir _wrmdir
#define wxCRT_Open _wopen
#define wxCRT_Access _waccess
#define wxCRT_MkDir _wmkdir
#define wxCRT_RmDir _wrmdir
#ifdef wxHAS_HUGE_FILES
#define wxStat _wstati64
#define wxCRT_Stat _wstati64
#else
#define wxStat _wstat
#define wxCRT_Stat _wstat
#endif
#endif
#endif // wxUSE_UNICODE_MSLU/!wxUSE_UNICODE_MSLU
#else // !wxUSE_UNICODE
#define wxOpen wxPOSIX_IDENT(open)
#define wxAccess wxPOSIX_IDENT(access)
#define wxMkDir wxPOSIX_IDENT(mkdir)
#define wxRmDir wxPOSIX_IDENT(rmdir)
#define wxCRT_Open wxPOSIX_IDENT(open)
#define wxCRT_Access wxPOSIX_IDENT(access)
#define wxCRT_MkDir wxPOSIX_IDENT(mkdir)
#define wxCRT_RmDir wxPOSIX_IDENT(rmdir)
#ifdef wxHAS_HUGE_FILES
#define wxStat wxPOSIX_IDENT(stati64)
#define wxCRT_Stat wxPOSIX_IDENT(stati64)
#else
#define wxStat wxPOSIX_IDENT(stat)
#define wxCRT_Stat wxPOSIX_IDENT(stat)
#endif
#endif // wxUSE_UNICODE/!wxUSE_UNICODE
@@ -398,44 +402,51 @@ enum wxFileKind
#define wxFsync fsync
#define wxEof eof
#define wxMkDir mkdir
#define wxRmDir rmdir
#define wxCRT_MkDir mkdir
#define wxCRT_RmDir 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 wxLstat( 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 wxLstat lstat
#define wxAccess access
#endif
#define wxCRT_Open open
#define wxCRT_Stat stat
#define wxCRT_Lstat lstat
#define wxCRT_Access access
#define wxHAS_NATIVE_LSTAT
#endif // platforms
// if the platform doesn't have symlinks, define wxCRT_Lstat to be the same as
// wxCRT_Stat to avoid #ifdefs in the code using it
#ifndef wxHAS_NATIVE_LSTAT
#define wxCRT_Lstat wxCRT_Stat
#endif
inline int wxStat(const wxString& path, wxStructStat *buf)
{ return wxCRT_Stat(path.fn_str(), buf); }
inline int wxLstat(const wxString& path, wxStructStat *buf)
{ return wxCRT_Lstat(path.fn_str(), buf); }
inline int wxAccess(const wxString& path, mode_t mode)
{ return wxCRT_Access(path.fn_str(), mode); }
inline int wxOpen(const wxString& path, int flags, mode_t mode)
{ return wxCRT_Open(path.fn_str(), flags, mode); }
inline int wxRmDir(const wxString& path)
{ return wxCRT_RmDir(path.fn_str()); }
#ifdef __WINDOWS__
inline int wxMkDir(const wxString& path, mode_t WXUNUSED(mode) = 0)
{ return wxCRT_MkDir(path.fn_str()); }
#else
inline int wxMkDir(const wxString& path, mode_t mode)
{ return wxCRT_MkDir(path.fn_str(), mode); }
#endif
#ifdef O_BINARY
#define wxO_BINARY O_BINARY
#else
#define wxO_BINARY 0
#endif
// if the platform doesn't have symlinks, define wxLstat to be the same as
// wxStat to avoid #ifdefs in the code using it
#ifndef wxHAS_NATIVE_LSTAT
#define wxLstat wxStat
#endif
#if defined(__VISAGECPP__) && __IBMCPP__ >= 400
//
// VisualAge C++ V4.0 cannot have any external linkage const decs
@@ -463,15 +474,15 @@ WXDLLIMPEXP_BASE wxString wxFileNameFromPath(const wxString& path);
// Get directory
WXDLLIMPEXP_BASE wxString wxPathOnly(const wxString& path);
// wxString version
WXDLLIMPEXP_BASE wxString wxRealPath(const wxString& path);
WXDLLIMPEXP_BASE void wxDos2UnixFilename(char *s);
WXDLLIMPEXP_BASE void wxDos2UnixFilename(wchar_t *s);
WXDLLIMPEXP_BASE void wxDos2UnixFilename(wxChar *s);
WXDLLIMPEXP_BASE void wxUnix2DosFilename(wxChar *s);
WXDLLIMPEXP_BASE void wxUnix2DosFilename(char *s);
WXDLLIMPEXP_BASE void wxUnix2DosFilename(wchar_t *s);
// Strip the extension, in situ
WXDLLIMPEXP_BASE void wxStripExtension(wxChar *buffer);
WXDLLIMPEXP_BASE void wxStripExtension(char *buffer);
WXDLLIMPEXP_BASE void wxStripExtension(wchar_t *buffer);
WXDLLIMPEXP_BASE void wxStripExtension(wxString& buffer);
// Get a temporary filename
@@ -479,8 +490,9 @@ WXDLLIMPEXP_BASE wxChar* wxGetTempFileName(const wxString& prefix, wxChar *buf =
WXDLLIMPEXP_BASE bool wxGetTempFileName(const wxString& prefix, wxString& buf);
// Expand file name (~/ and ${OPENWINHOME}/ stuff)
WXDLLIMPEXP_BASE wxChar* wxExpandPath(wxChar *dest, const wxChar *path);
WXDLLIMPEXP_BASE bool wxExpandPath(wxString& dest, const wxChar *path);
WXDLLIMPEXP_BASE char* wxExpandPath(char *dest, const wxString& path);
WXDLLIMPEXP_BASE wchar_t* wxExpandPath(wchar_t *dest, const wxString& path);
// FIXME-UTF8: add some wxString version
// Contract w.r.t environment (</usr/openwin/lib, OPENWHOME> -> ${OPENWINHOME}/lib)
// and make (if under the home tree) relative to home
@@ -490,7 +502,10 @@ WXDLLIMPEXP_BASE wxChar* wxContractPath(const wxString& filename,
const wxString& user = wxEmptyString);
// Destructive removal of /./ and /../ stuff
WXDLLIMPEXP_BASE wxChar* wxRealPath(wxChar *path);
// FIXME-UTF8: deprecate these two (and similar)
WXDLLIMPEXP_BASE char* wxRealPath(char *path);
WXDLLIMPEXP_BASE wchar_t* wxRealPath(wchar_t *path);
WXDLLIMPEXP_BASE wxString wxRealPath(const wxString& path);
// Allocate a copy of the full absolute path
WXDLLIMPEXP_BASE wxChar* wxCopyAbsolutePath(const wxString& path);
@@ -499,7 +514,7 @@ WXDLLIMPEXP_BASE wxChar* wxCopyAbsolutePath(const wxString& path);
// Flags are reserved for future use.
#define wxFILE 1
#define wxDIR 2
WXDLLIMPEXP_BASE wxString wxFindFirstFile(const wxChar *spec, int flags = wxFILE);
WXDLLIMPEXP_BASE wxString wxFindFirstFile(const wxString& spec, int flags = wxFILE);
WXDLLIMPEXP_BASE wxString wxFindNextFile();
// Does the pattern contain wildcards?
@@ -619,17 +634,17 @@ inline bool wxIsPathSeparator(wxChar c)
}
// does the string ends with path separator?
WXDLLIMPEXP_BASE bool wxEndsWithPathSeparator(const wxChar *pszFileName);
WXDLLIMPEXP_BASE bool wxEndsWithPathSeparator(const wxString& filename);
// split the full path into path (including drive for DOS), name and extension
// (understands both '/' and '\\')
WXDLLIMPEXP_BASE void wxSplitPath(const wxChar *pszFileName,
WXDLLIMPEXP_BASE void wxSplitPath(const wxString& fileName,
wxString *pstrPath,
wxString *pstrName,
wxString *pstrExt);
// find a file in a list of directories, returns false if not found
WXDLLIMPEXP_BASE bool wxFindFileInPath(wxString *pStr, const wxChar *pszPath, const wxChar *pszFile);
WXDLLIMPEXP_BASE bool wxFindFileInPath(wxString *pStr, const wxString& szPath, const wxString& szFile);
// Get the OS directory if appropriate (such as the Windows directory).
// On non-Windows platform, probably just return the empty string.