#include "wx/platform.h"
#include "wx/dlimpexp.h"
+#include <stdio.h> /* we use FILE below */
+
#if defined(HAVE_STRTOK_R) && defined(__DARWIN__) && defined(_MSL_USING_MW_C_HEADERS) && _MSL_USING_MW_C_HEADERS
char *strtok_r(char *, const char *, char **);
#endif
/* include stdlib.h for wchar_t */
#include <stdlib.h>
#endif /* HAVE_WCHAR_H */
+
+ #ifdef HAVE_WIDEC_H
+ #include <widec.h>
+ #endif
#endif /* wxUSE_WCHAR_T */
/* ---------------------------------------------------------------------------- */
#define wxStrtod _tcstod
#define wxStrtol _tcstol
#define wxStrtoul _tcstoul
+ #ifdef __VISUALC__
+ #if __VISUALC__ >= 1300 && !defined(__WXWINCE__)
+ #define wxStrtoll _tcstoi64
+ #define wxStrtoull _tcstoui64
+ #endif /* VC++ 7+ */
+ #endif
#define wxStrxfrm _tcsxfrm
/* stdio.h functions */
#define wxFgetchar _fgettchar
#define wxFgets _fgetts
#if wxUSE_UNICODE_MSLU
+ WXDLLIMPEXP_BASE FILE * wxMSLU__tfopen(const wxChar *name, const wxChar *mode);
+
#define wxFopen wxMSLU__tfopen
#else
#define wxFopen _tfopen
/* special case: these functions are missing under Win9x with Unicows so we */
/* have to implement them ourselves */
#if wxUSE_UNICODE_MSLU
+ WXDLLIMPEXP_BASE int wxMSLU__trename(const wxChar *oldname, const wxChar *newname);
+ WXDLLIMPEXP_BASE int wxMSLU__tremove(const wxChar *name);
+
#define wxRemove wxMSLU__tremove
#define wxRename wxMSLU__trename
#else
#define wxStrtod wcstod
#define wxStrtol wcstol
#define wxStrtoul wcstoul
+ #ifdef HAVE_WCSTOULL
+ /* assume that we have wcstoull(), which is also C99, too */
+ #define wxStrtoll wcstoll
+ #define wxStrtoull wcstoull
+ #endif /* HAVE_WCSTOULL */
#define wxStrxfrm wcsxfrm
#define wxFgetc fgetwc
#endif
#define wxStrtol strtol
#define wxStrtoul strtoul
+ #ifdef HAVE_STRTOULL
+ /* assume that we have wcstoull(), which is also C99, too */
+ #define wxStrtoll strtoll
+ #define wxStrtoull strtoull
+ #endif /* HAVE_WCSTOULL */
#define wxStrxfrm strxfrm
/* stdio.h functions */
#endif /* Unicode/ASCII */
#endif /* TCHAR-aware compilers/the others */
+#ifdef wxStrtoll
+ #define wxHAS_STRTOLL
+#endif
+
/*
various special cases
*/
#else
extern
#endif
- int snprintf(char *str, size_t size, const char *format, ...);
+ WXDLLIMPEXP_BASE 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
/*
MinGW MSVCRT has non-standard vswprintf() (for MSVC compatibility
presumably) and normally _vsnwprintf() is used instead
-
- vswprintf() under (early versions of) OS X is buggy
*/
-#if defined(HAVE_VSWPRINTF) && (defined(__MINGW32__) || defined(__DARWIN__))
+#if defined(HAVE_VSWPRINTF) && defined(__MINGW32__)
#undef HAVE_VSWPRINTF
#endif
#else /* !HAVE_UNIX98_PRINTF */
/*
The only compiler with positional parameters support under Windows
- is VC++ 8.0 which provides a new xxprintf_p() functions family
+ is VC++ 8.0 which provides a new xxprintf_p() functions family.
+ The 2003 PSDK includes a slightly earlier version of VC8 than the
+ main release and does not have the printf_p functions.
*/
- #if defined(__VISUALC__) && __VISUALC__ >= 1400
+ #if defined _MSC_FULL_VER && _MSC_FULL_VER >= 140050727 && !defined __WXWINCE__
#if wxUSE_UNICODE
#define wxVsnprintf_ _vswprintf_p
#else
either because we don't have them at all or because they don't have the
semantics we need
*/
-
- #include <stdio.h> /* for FILE */
-
int wxScanf( const wxChar *format, ... ) ATTRIBUTE_PRINTF_1;
int wxSscanf( const wxChar *str, const wxChar *format, ... ) ATTRIBUTE_PRINTF_2;
int wxFscanf( FILE *stream, const wxChar *format, ... ) ATTRIBUTE_PRINTF_2;