Try to not include ctype functions for win32. Not really tested with

Borland C++, as I don't have the machine with BC++ available right now,
but it should probably be better anyway...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Ove Kaaven 1999-05-07 18:36:06 +00:00
parent aadbdf11bd
commit 57f6da0dec
2 changed files with 47 additions and 26 deletions

View File

@ -168,32 +168,7 @@ typedef _TUCHAR wxUChar;
#undef wxUSE_WCHAR_T
#define wxUSE_WCHAR_T 1
#include <windef.h>
#include <winbase.h>
#include <winnls.h>
#include <winnt.h>
// ctype.h functions
inline WORD __wxMSW_ctype(wxChar ch)
{
WORD ret;
GetStringTypeEx(LOCALE_USER_DEFAULT, CT_CTYPE1, &ch, 1, &ret);
return ret;
}
#define wxIsalnum(x) IsCharAlphaNumeric
#define wxIsalpha IsCharAlpha
#define wxIsctrl(x) (__wxMSW_ctype(x) & C1_CNTRL)
#define wxIsdigit(x) (__wxMSW_ctype(x) & C1_DIGIT)
#define wxIsgraph(x) (__wxMSW_ctype(x) & (C1_DIGIT|C1_PUNCT|C1_ALPHA))
#define wxIslower(x) IsCharLower
#define wxIsprint(x) (__wxMSW_ctype(x) & (C1_DIGIT|C1_SPACE|C1_PUNCT|C1_ALPHA))
#define wxIspunct(x) (__wxMSW_ctype(x) & C1_PUNCT)
#define wxIsspace(x) (__wxMSW_ctype(x) & C1_SPACE)
#define wxIsupper(x) IsCharUpper
#define wxIsxdigit(x) (__wxMSW_ctype(x) & C1_XDIGIT)
#define wxTolower(x) (wxChar)CharLower((LPTSTR)(x))
#define wxToupper(x) (wxChar)CharUpper((LPTSTR)(x))
#define wxNEED_WX_CTYPE_H
// #define wxStrtok strtok_r // Borland C++ 4.52 doesn't have strtok_r
#define wxNEED_WX_STRING_H
#define wxNEED_WX_STDIO_H
@ -490,6 +465,22 @@ wxChar * WXDLLEXPORT wxSetlocale(int category, const wxChar *locale);
size_t WXDLLEXPORT wcslen(const wchar_t *s);
#endif
#ifdef wxNEED_WX_CTYPE_H
int WXDLLEXPORT wxIsalnum(wxChar ch);
int WXDLLEXPORT wxIsalpha(wxChar ch);
int WXDLLEXPORT wxIsctrl(wxChar ch);
int WXDLLEXPORT wxIsdigit(wxChar ch);
int WXDLLEXPORT wxIsgraph(wxChar ch);
int WXDLLEXPORT wxIslower(wxChar ch);
int WXDLLEXPORT wxIsprint(wxChar ch);
int WXDLLEXPORT wxIspunct(wxChar ch);
int WXDLLEXPORT wxIsspace(wxChar ch);
int WXDLLEXPORT wxIsupper(wxChar ch);
int WXDLLEXPORT wxIsxdigit(wxChar ch);
int WXDLLEXPORT wxTolower(wxChar ch);
int WXDLLEXPORT wxToupper(wxChar ch);
#endif
#ifdef wxNEED_WX_STRING_H
wxChar * WXDLLEXPORT wxStrcat(wxChar *dest, const wxChar *src);
wxChar * WXDLLEXPORT wxStrchr(const wxChar *s, wxChar c);

View File

@ -39,6 +39,13 @@
#include "wx/hash.h"
#endif
#if defined(__WIN32__) && defined(wxNEED_WX_CTYPE_H)
#include <windef.h>
#include <winbase.h>
#include <winnls.h>
#include <winnt.h>
#endif
#if wxUSE_WCHAR_T
size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n)
{
@ -115,6 +122,29 @@ size_t WXDLLEXPORT wcslen(const wchar_t *s)
}
#endif
#if defined(__WIN32__) && defined(wxNEED_WX_CTYPE_H)
inline WORD wxMSW_ctype(wxChar ch)
{
WORD ret;
GetStringTypeEx(LOCALE_USER_DEFAULT, CT_CTYPE1, &ch, 1, &ret);
return ret;
}
int WXDLLEXPORT wxIsalnum(wxChar ch) { return IsCharAlphaNumeric(ch); }
int WXDLLEXPORT wxIsalpha(wxChar ch) { return IsCharAlpha(ch); }
int WXDLLEXPORT wxIsctrl(wxChar ch) { return wxMSW_ctype(ch) & C1_CNTRL; }
int WXDLLEXPORT wxIsdigit(wxChar ch) { return wxMSW_ctype(ch) & C1_DIGIT; }
int WXDLLEXPORT wxIsgraph(wxChar ch) { return wxMSW_ctype(ch) & (C1_DIGIT|C1_PUNCT|C1_ALPHA); }
int WXDLLEXPORT wxIslower(wxChar ch) { return IsCharLower(ch); }
int WXDLLEXPORT wxIsprint(wxChar ch) { return wxMSW_ctype(ch) & (C1_DIGIT|C1_SPACE|C1_PUNCT|C1_ALPHA); }
int WXDLLEXPORT wxIspunct(wxChar ch) { return wxMSW_ctype(ch) & C1_PUNCT; }
int WXDLLEXPORT wxIsspace(wxChar ch) { return wxMSW_ctype(ch) & C1_SPACE; }
int WXDLLEXPORT wxIsupper(wxChar ch) { return IsCharUpper(ch); }
int WXDLLEXPORT wxIsxdigit(wxChar ch) { return wxMSW_ctype(ch) & C1_XDIGIT; }
int WXDLLEXPORT wxTolower(wxChar ch) { return (wxChar)CharLower((LPTSTR)(ch); }
int WXDLLEXPORT wxToupper(wxChar ch) { return (wxChar)CharUpper((LPTSTR)(ch); }
#endif
#ifndef wxStrdup
wxChar * WXDLLEXPORT wxStrdup(const wxChar *psz)
{