jberry 2003/02/05 10:11:41 Modified: c/src/xercesc/util/Compilers CodeWarriorDefs.cpp CodeWarriorDefs.hpp Log: Partial patch to address bug #14599 by Zeid Derhally at Metrowerks in support of CodeWarrior for Windows Revision Changes Path 1.4 +74 -2 xml-xerces/c/src/xercesc/util/Compilers/CodeWarriorDefs.cpp Index: CodeWarriorDefs.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Compilers/CodeWarriorDefs.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- CodeWarriorDefs.cpp 22 Aug 2002 23:57:02 -0000 1.3 +++ CodeWarriorDefs.cpp 5 Feb 2003 18:11:41 -0000 1.4 @@ -60,12 +60,14 @@ #include <xercesc/util/XercesDefs.hpp> #include <ctype.h> +#include <string.h> +#include <stdlib.h> // These functions are needed because MacOS doesn't define them // (these routines are defined in CW 8 by extras.h, but there is no MachO // library for extras). -#if __MACH__ && __MWERKS__ +#if __MACH__ // Compare lexigraphically two strings int stricmp(const char *s1, const char *s2) { @@ -96,4 +98,74 @@ return 0; } #endif + + +#if defined(_WIN32) || defined(WIN32) +int mbswcslen(const char * s, const unsigned int n) +{ + int result; + char * source; + int count = -1; + size_t source_len; + + source_len = strlen(s); + + source = (char *)s; + + for (count = 0; count < n; count++) + { + if (*source) + { + result = mbtowc(0, source, source_len); + if (result > 0) + { + source += result; + source_len -= result; + } + else + return((size_t)-1); /*- mm 011102 -*/ + } + else + break; + } + + return(count); +} + +int wcsmbslen(const wchar_t * pwcs, const unsigned int n) +{ + int count = 0; + int result; + wchar_t * source; + char temp[3]; + + if (!pwcs) + return (0); + + source = (wchar_t*)pwcs; + + while(count <= n) + { + if (!*source) + { + break; + } + else + { + result = wctomb(temp, *source++); + if ((count + result) <= n) + { + count += result; + } + else + break; + } + } + + return(count); +} +#endif + + + 1.9 +27 -6 xml-xerces/c/src/xercesc/util/Compilers/CodeWarriorDefs.hpp Index: CodeWarriorDefs.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Compilers/CodeWarriorDefs.hpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- CodeWarriorDefs.hpp 4 Nov 2002 14:45:20 -0000 1.8 +++ CodeWarriorDefs.hpp 5 Feb 2003 18:11:41 -0000 1.9 @@ -64,19 +64,30 @@ // --------------------------------------------------------------------------- // Include some runtime files that will be needed product wide // --------------------------------------------------------------------------- -//#include <sys/types.h> // for size_t and ssize_t -//#include <limits.h> // for MAX of size_t and ssize_t +//#include <sys/types.h> // for size_t and ssize_t +//#include <limits.h> // for MAX of size_t and ssize_t //#include <extras.h> +#if defined(_WIN32) || defined(WIN32) +#include <wchar.h> +#include <wctype.h> +#endif + + // --------------------------------------------------------------------------- // A define in the build for each project is also used to control whether // the export keyword is from the project's viewpoint or the client's. // These defines provide the platform specific keywords that they need // to do this. // --------------------------------------------------------------------------- -#define PLATFORM_EXPORT __declspec(export) -#define PLATFORM_IMPORT __declspec(import) - +#if defined(macintosh) +#define PLATFORM_EXPORT __declspec(export) +#define PLATFORM_IMPORT __declspec(import) +#elif defined(_WIN32) || defined(WIN32) +#define PLATFORM_EXPORT __declspec(dllexport) +#define PLATFORM_IMPORT __declspec(dllimport) +#endif + // --------------------------------------------------------------------------- // Indicate that we do not support native bools // If the compiler can handle boolean itself, do not define it @@ -100,7 +111,11 @@ // --------------------------------------------------------------------------- // Define our version of the XML character // --------------------------------------------------------------------------- +#if defined(macintosh) typedef unsigned short XMLCh; +#elif defined(_WIN32) || defined(WIN32) +typedef wchar_t XMLCh; +#endif // --------------------------------------------------------------------------- // Define unsigned 16 and 32 bits integers @@ -143,6 +158,12 @@ #if __MACH__ && __MWERKS__ int stricmp(const char* const str1, const char* const str2); int strnicmp(const char* const str1, const char* const str2, const unsigned int count); +#endif + +#if __MWERKS__ && (defined(_WIN32) || defined(WIN32)) +/* used in place of calling mbstowcs or wcstombs with a NULL destination */ +int mbswcslen(const char * s, const unsigned int n); +int wcsmbslen(const wchar_t * pwcs, const unsigned int n); #endif // ---------------------------------------------------------------------------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]