wxchar.h
来自「A*算法 A*算法 A*算法 A*算法A*算法A*算法」· C头文件 代码 · 共 1,259 行 · 第 1/3 页
H
1,259 行
#endif
#ifdef __DARWIN__
#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2
#define wxNEED_WX_MBSTOWCS
#endif
#endif
#ifdef wxNEED_WX_MBSTOWCS
/* even though they are defined and "implemented", they are bad and just
stubs so we need our own - we need these even in ANSI builds!! */
WXDLLIMPEXP_BASE size_t wxMbstowcs (wchar_t *, const char *, size_t);
WXDLLIMPEXP_BASE size_t wxWcstombs (char *, const wchar_t *, size_t);
#else
#define wxMbstowcs mbstowcs
#define wxWcstombs wcstombs
#endif
/* No UNICODE in the c library except wchar_t typedef on mac OSX 10.2 and less - roll our own */
#if !defined(__MWERKS__) && wxUSE_UNICODE && defined(__DARWIN__) && ( MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2 )
/* we need everything! */
#define wxNEED_WX_STRING_H
#define wxNEED_WX_CTYPE_H
#define wxFgetchar(c) wxFgetc(c, stdin)
#define wxFputc wxPutc
#define wxFputchar(c) wxPutc(c, stdout)
#define wxGetc wxFgetc
#define wxGetchar(c) wxFgetc(c, stdin)
#include <stdio.h>
#define wxNEED_FGETC
#define wxNEED_FGETS
#define wxNEED_GETS
#define wxNEED_UNGETC
#define wxNEED_FPUTS
#define wxNEED_PUTS
#define wxNEED_PUTC
int wxFputs(const wxChar *ch, FILE *stream);
int wxPuts(const wxChar *ws);
int wxPutc(wxChar ch, FILE *stream);
#ifdef __cplusplus
extern "C" {
#endif
WXDLLIMPEXP_BASE size_t wxStrlen_(const wxChar *s);
#ifdef __cplusplus
}
#endif
#define wxPutchar(wch) wxPutc(wch, stdout)
#define wxNEED_PRINTF_CONVERSION
#define wxNEED_WX_STDIO_H
#define wxNEED_WX_STDLIB_H
#define wxNEED_WX_TIME_H
#elif wxUSE_UNICODE
#include <wctype.h>
/* this is probably glibc-specific */
#if defined(__WCHAR_TYPE__) && !defined(__MWERKS__)
/* ctype.h functions (wctype.h) */
#define wxIsalnum iswalnum
#define wxIsalpha iswalpha
#define wxIscntrl iswcntrl
#define wxIsdigit iswdigit
#define wxIsgraph iswgraph
#define wxIslower iswlower
#define wxIsprint iswprint
#define wxIspunct iswpunct
#define wxIsspace iswspace
#define wxIsupper iswupper
#define wxIsxdigit iswxdigit
#if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)
/* /usr/include/wctype.h incorrectly declares translations */
/* tables which provokes tons of compile-time warnings -- try */
/* to correct this */
#define wxTolower(wc) towctrans((wc), (wctrans_t)__ctype_tolower)
#define wxToupper(wc) towctrans((wc), (wctrans_t)__ctype_toupper)
#else /* !glibc 2.0 */
#define wxTolower towlower
#define wxToupper towupper
#endif /* gcc/!gcc */
/* string.h functions (wchar.h) */
#define wxStrcat wcscat
#define wxStrchr wcschr
#define wxStrcmp wcscmp
#define wxStrcoll wcscoll
#define wxStrcpy wcscpy
#define wxStrcspn wcscspn
#define wxStrlen_ wxWcslen /* wxStrlen_() is used in wxStrlen() */
#define wxStrncat wcsncat
#define wxStrncmp wcsncmp
#define wxStrncpy wcsncpy
#define wxStrpbrk wcspbrk
#define wxStrrchr wcsrchr
#define wxStrspn wcsspn
#define wxStrstr wcsstr
#define wxStrtod wcstod
#define wxStrtol wcstol
#define wxStrtoul wcstoul
#define wxStrxfrm wcsxfrm
#define wxFgetc fgetwc
#define wxFgetchar fgetwchar
#define wxFgets fgetws
#define wxFputc fputwc
#define wxFputchar fputwchar
#define wxGetc getwc
#define wxGetchar getwchar
#define wxGets getws
#define wxUngetc ungetwc
#ifdef HAVE_FPUTWS
#define wxFputs fputws
#else
#define wxNEED_FPUTS
#include <stdio.h>
int wxFputs(const wxChar *ch, FILE *stream);
#endif
#ifdef HAVE_WPUTC
#define wxPutc wputc
#else
#define wxNEED_PUTC
#include <stdio.h>
int wxPutc(wxChar ch, FILE *stream);
#endif
#ifdef HAVE_WPUTCHAR
#define wxPutchar wputchar
#else
#define wxPutchar(wch) wxPutc(wch, stdout)
#endif
#ifdef HAVE_PUTWS
#define wxPuts putws
#else
#define wxNEED_PUTS
int wxPuts(const wxChar *ws);
#endif
/* we need %s to %ls conversion for printf and scanf etc */
#define wxNEED_PRINTF_CONVERSION
/* glibc doesn't have wide char equivalents of the other stuff so */
/* use our own versions */
#define wxNEED_WX_STDIO_H
#define wxNEED_WX_STDLIB_H
#define wxNEED_WX_TIME_H
#elif defined(__MWERKS__) && ( defined(__MSL__) || defined(__MACH__) )
/* ctype.h functions (wctype.h) */
#define wxIsalnum iswalnum
#define wxIsalpha iswalpha
#define wxIscntrl iswcntrl
#define wxIsdigit iswdigit
#define wxIsgraph iswgraph
#define wxIslower iswlower
#define wxIsprint iswprint
#define wxIspunct iswpunct
#define wxIsspace iswspace
#define wxIsupper iswupper
#define wxIsxdigit iswxdigit
#define wxTolower towlower
#define wxToupper towupper
/* string.h functions (wchar.h) */
#define wxStrcat wcscat
#define wxStrchr wcschr
#define wxStrcmp wcscmp
#define wxStrcoll wcscoll
#define wxStrcpy wcscpy
#define wxStrcspn wcscspn
#define wxStrlen_ wxWcslen /* wxStrlen_() is used in wxStrlen() */
#define wxStrncat wcsncat
#define wxStrncmp wcsncmp
#define wxStrncpy wcsncpy
#define wxStrpbrk wcspbrk
#define wxStrrchr wcsrchr
#define wxStrspn wcsspn
#define wxStrstr wcsstr
#define wxStrtod wcstod
#define wxStrtol wcstol
#define wxStrtoul wcstoul
#define wxStrxfrm wcsxfrm
#define wxFgetc fgetwc
#define wxFgetchar fgetwchar
#define wxFgets fgetws
#define wxFputc fputwc
#define wxFputchar fputwchar
#define wxGetc getwc
#define wxGetchar getwchar
#define wxGets getws
#define wxUngetc ungetwc
#define wxNEED_PRINTF_CONVERSION
#define wxPutc putwc
#define wxPutchar putwchar
#define wxFputs fputws
/* stdio.h functions */
#define wxNEED_WX_STDIO_H
/* stdlib.h functions */
#ifdef __MACH__
#define wxNEED_WX_STDLIB_H
#else
#define wxAtof watof
#define wxAtoi watoi
#define wxAtol watol
#define wxGetenv(a) ((wxChar*)NULL)
#define wxSystem(a) ((int)NULL)
#endif
/* time.h functions */
#define wxAsctime wasciitime
#define wxCtime wctime
/* #define wxStrftime wcsftime */
#define wxNEED_WX_TIME_H
#else /* !metrowerks for apple */
#error "Please define wide character functions for your environment"
#endif
#else /* ASCII */
#include <ctype.h>
#include <string.h>
/* ctype.h functions */
#define wxIsalnum isalnum
#define wxIsalpha isalpha
#define wxIscntrl iscntrl
#define wxIsdigit isdigit
#define wxIsgraph isgraph
#define wxIslower islower
#define wxIsprint isprint
#define wxIspunct ispunct
#define wxIsspace isspace
#define wxIsupper isupper
#define wxIsxdigit isxdigit
#define wxTolower tolower
#define wxToupper toupper
/* locale.h functons */
#define wxSetlocale setlocale
/* string.h functions */
#define wxStrcat strcat
#define wxStrchr strchr
#define wxStrcmp strcmp
#define wxStrcoll strcoll
#define wxStrcpy strcpy
#define wxStrcspn strcspn
/* wxStricmp and wxStrnicmp are defined below */
#define wxStrlen_ strlen /* used in wxStrlen inline function */
#define wxStrncat strncat
#define wxStrncmp strncmp
#define wxStrncpy strncpy
#define wxStrpbrk strpbrk
#define wxStrrchr strrchr
#define wxStrspn strspn
#define wxStrstr strstr
#define wxStrtod strtod
#ifdef HAVE_STRTOK_R
#define wxStrtok(str, sep, last) strtok_r(str, sep, last)
#endif
#define wxStrtol strtol
#define wxStrtoul strtoul
#define wxStrxfrm strxfrm
/* stdio.h functions */
#define wxFopen fopen
#define wxFreopen freopen
#define wxRemove remove
#define wxRename rename
#define wxPerror perror
#define wxTmpnam tmpnam
#define wxFgetc fgetc
#define wxFgetchar fgetchar
#define wxFgets fgets
#define wxFputc fputc
#define wxFputs fputs
#define wxFputchar fputchar
#define wxFprintf fprintf
#define wxFscanf fscanf
#define wxGetc getc
#define wxGetchar getchar
#define wxGets gets
#define wxPrintf printf
#define wxPutc putc
#define wxPutchar putchar
#define wxPuts puts
#define wxScanf scanf
#define wxSprintf sprintf
#define wxSscanf sscanf
#define wxUngetc ungetc
#define wxVfprintf vfprintf
#define wxVprintf vprintf
#define wxVsscanf vsscanf
#define wxVsprintf vsprintf
/* stdlib.h functions */
#define wxAtof atof
#define wxAtoi atoi
#define wxAtol atol
#define wxGetenv getenv
#define wxSystem system
/* time.h functions */
#define wxAsctime asctime
#define wxCtime ctime
#define wxStrftime strftime
#endif /* Unicode/ASCII */
#endif /* TCHAR-aware compilers/the others */
/*
various special cases
*/
/* define wxStricmp and wxStrnicmp for various compilers */
/* note that in Unicode mode we definitely are going to need our own version */
#if !defined(wxStricmp) && !wxUSE_UNICODE
#if defined(__BORLANDC__) || defined(__WATCOMC__) || \
defined(__SALFORDC__) || defined(__VISAGECPP__) || \
defined(__EMX__) || defined(__DJGPP__)
#define wxStricmp stricmp
#define wxStrnicmp strnicmp
#elif defined(__WXPALMOS__)
/* FIXME: There is no equivalent to strnicmp in the Palm OS API. This
* quick hack should do until one can be written.
*/
#define wxStricmp StrCaselessCompare
#define wxStrnicmp strnicmp
#elif defined(__SYMANTEC__) || defined(__VISUALC__) || \
(defined(__MWERKS__) && defined(__INTEL__))
#define wxStricmp _stricmp
#define wxStrnicmp _strnicmp
#elif defined(__UNIX__) || defined(__GNUWIN32__)
#define wxStricmp strcasecmp
#define wxStrnicmp strncasecmp
/* #else -- use wxWidgets implementation */
#endif
#endif /* !defined(wxStricmp) */
/* define wxWcslen() which should be always available if wxUSE_WCHAR_T == 1 (as */
/* it's used in wx/buffer.h -- and also might be used just below by wxStrlen() */
/* when wxStrlen_() is #define'd as wxWcslen so do it before defining wxStrlen) */
#if wxUSE_WCHAR_T
#ifdef HAVE_WCSLEN
#define wxWcslen wcslen
#else
WXDLLIMPEXP_BASE size_t wxWcslen(const wchar_t *s);
#endif
#endif /* wxUSE_WCHAR_T */
#ifdef __cplusplus
/* checks whether the passed in pointer is NULL and if the string is empty */
inline bool wxIsEmpty(const wxChar *p) { return !p || !*p; }
/* safe version of strlen() (returns 0 if passed NULL pointer) */
inline size_t wxStrlen(const wxChar *psz) { return psz ? wxStrlen_(psz) : 0; }
#endif
/*
each of strdup() and wcsdup() may or may not be available but we need both
of them anyhow for wx/buffer.h so we define the missing one(s) in
wxchar.cpp and so we should always have both wxStrdupA and wxStrdupW
defined -- if this is somehow not the case in some situations, please
correct that and not the lines here
*/
#if wxUSE_UNICODE
#define wxStrdup wxStrdupW
#else
#define wxStrdup wxStrdupA
#endif
#ifdef __cplusplus
WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */
#endif
/* printf() family saga */
/*
For some systems [v]snprintf() exists in the system libraries but not in the
headers, so we need to declare it ourselves to be able to use it.
*/
#if defined(HAVE_VSNPRINTF) && !defined(HAVE_VSNPRINTF_DECL)
#ifdef __cplusplus
extern "C"
#else
extern
#endif
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
#endif /* !HAVE_VSNPRINTF_DECL */
#if defined(HAVE_SNPRINTF) && !defined(HAVE_SNPRINTF_DECL)
#ifdef __cplusplus
extern "C"
#else
extern
#endif
int snprintf(char *str, size_t size, const char *format, ...);
#endif /* !HAVE_SNPRINTF_DECL */
/* Wrapper for vsnprintf if it's 3rd parameter is non-const. Note: the
* same isn't done for snprintf below, the builtin wxSnprintf_ is used
* instead since it's already a simple wrapper */
#if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?