// Created: 09/04/99
// RCS-ID: $Id$
// Copyright: (c) wxWindows copyright
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "wxchar.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <locale.h>
+
+#ifndef __WXWINCE__
#include <time.h>
+#include <locale.h>
+#else
+#include "wx/msw/wince/time.h"
+#endif
#ifndef WX_PRECOMP
#include "wx/defs.h"
#include <winnt.h>
#endif
+#if defined(__MWERKS__) && __MSL__ >= 0x6000
+using namespace std ;
+#endif
+
+#ifdef __WXMAC__
+ #include "wx/mac/private.h"
+#endif
+
#if wxUSE_WCHAR_T
size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n)
{
{
va_list argptr;
va_start(argptr, format);
-
int ret = vfwscanf(stream, wxFormatConverter(format), argptr);
va_end(argptr);
#endif // wxNEED_PRINTF_CONVERSION
+#if wxUSE_WCHAR_T
+
// ----------------------------------------------------------------------------
// ctype.h stuff (currently unused)
// ----------------------------------------------------------------------------
#ifndef wxStricmp
int WXDLLEXPORT wxStrnicmp(const wxChar *s1, const wxChar *s2, size_t n)
{
- register wxChar c1, c2;
+ // initialize the variables just to suppress stupid gcc warning
+ register wxChar c1 = 0, c2 = 0;
while (n && ((c1 = wxTolower(*s1)) == (c2 = wxTolower(*s2)) ) && c1) n--, s1++, s2++;
if (n) {
if (c1 < c2) return -1;
}
#endif
-#ifndef wxStrtok
-WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_ptr)
-{
- if (!psz)
- {
- psz = *save_ptr;
- if ( !psz )
- return NULL;
- }
-
- psz += wxStrspn(psz, delim);
- if (!*psz)
- {
- *save_ptr = (wxChar *)NULL;
- return (wxChar *)NULL;
- }
-
- wxChar *ret = psz;
- psz = wxStrpbrk(psz, delim);
- if (!psz)
- {
- *save_ptr = (wxChar*)NULL;
- }
- else
- {
- *psz = wxT('\0');
- *save_ptr = psz + 1;
- }
-
- return ret;
-}
-#endif // wxStrtok
-
#ifndef wxSetlocale
WXDLLEXPORT wxWCharBuffer wxSetlocale(int category, const wxChar *locale)
{
}
#endif // wxNEED_WX_STRING_H
+#if defined(__WXMAC__) && !defined(__DARWIN__) && !defined(wxUSE_UNICODE)
+WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode)
+{
+ return fopen( wxMacStringToCString(path), mode );
+}
+
+WXDLLEXPORT FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream)
+{
+ return freopen( wxMacStringToCString(path), mode, stream );
+}
+
+WXDLLEXPORT int wxRemove(const wxChar *path)
+{
+ return remove( wxMacStringToCString(path) );
+}
+
+WXDLLEXPORT int wxRename(const wxChar *oldpath, const wxChar *newpath)
+{
+ return rename( wxMacStringToCString(oldpath), wxMacStringToCString(newpath) );
+}
+#endif
+
#ifdef wxNEED_WX_STDIO_H
WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode)
{
#ifndef wxAtof
double WXDLLEXPORT wxAtof(const wxChar *psz)
{
- return atof(wxConvLocal.cWX2MB(psz));
+#ifdef __WXWINCE__
+ double d;
+ wxString str(psz);
+ if (str.ToDouble(& d))
+ return d;
+ else
+ return 0.0;
+#else
+ return atof(wxConvLocal.cWX2MB(psz));
+#endif
}
#endif
return system(wxConvLocal.cWX2MB(psz));
}
-#endif
+#endif // wxNEED_WX_STDLIB_H
#ifdef wxNEED_WX_TIME_H
WXDLLEXPORT size_t wxStrftime(wxChar *s, size_t max, const wxChar *fmt, const struct tm *tm)
return 0;
}
}
+#endif // wxNEED_WX_TIME_H
+
+#endif // wxUSE_WCHAR_T
+
+// ----------------------------------------------------------------------------
+// functions which we may need even if !wxUSE_WCHAR_T
+// ----------------------------------------------------------------------------
+
+#ifndef wxStrtok
+
+WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_ptr)
+{
+ if (!psz)
+ {
+ psz = *save_ptr;
+ if ( !psz )
+ return NULL;
+ }
+
+ psz += wxStrspn(psz, delim);
+ if (!*psz)
+ {
+ *save_ptr = (wxChar *)NULL;
+ return (wxChar *)NULL;
+ }
+
+ wxChar *ret = psz;
+ psz = wxStrpbrk(psz, delim);
+ if (!psz)
+ {
+ *save_ptr = (wxChar*)NULL;
+ }
+ else
+ {
+ *psz = wxT('\0');
+ *save_ptr = psz + 1;
+ }
+
+ return ret;
+}
+
+#endif // wxStrtok
+
+// ----------------------------------------------------------------------------
+// missing C RTL functions
+// ----------------------------------------------------------------------------
+
+#if (defined(__MWERKS__) && !defined(__MACH__) && (__MSL__ < 0x00008000)) || \
+ defined(__WXWINCE__)
+char *strdup(const char *s)
+{
+ char *dest = (char*) malloc( strlen( s ) + 1 ) ;
+ if ( dest )
+ strcpy( dest , s ) ;
+ return dest ;
+}
+#endif
+
+#if (defined(__MWERKS__) && !defined(__MACH__)) || (defined(__WXWINCE__) && _WIN32_WCE <= 211)
+
+int isascii( int c )
+{
+ return ( c >= 0 && c < 128 );
+}
+#endif
+
+#if defined(__WXWINCE__)
+void *calloc( size_t num, size_t size )
+{
+ void** ptr = (void **)malloc(num * size);
+ memset( ptr, 0, num * size);
+ return ptr;
+}
+
+#if (_WIN32_WCE <= 211)
+int isspace(int c)
+{
+ return (c == ' ');
+}
+#endif
+
#endif