Yes, I did adjust autosense.hpp.  One thing I had to do is change this:

#if defined(_MSC_VER) 
    #define XML_VISUALCPP
#elif

to this

#if defined(_MSC_VER) && !defined( __MWERKS__ ) 
    #define XML_VISUALCPP
#elif

because Metrowerks defines _MSC_VER.  I guess it's trying to be Microsoft C 
compatible.

The wide-char routines appear to almost, but not quite work.

One thing that I know for sure is broken under Metrowerks is this code:

unsigned int Win32LCPTranscoder::calcRequiredSize(const char* const srcText)
{
    if (!srcText)
        return 0;

    const unsigned int retVal = ::mbstowcs(0, srcText, 0);
    if (retVal == (unsigned int)-1)
        return 0;
    return retVal;
}

In this case, passing a nil destination pointer and 0 buffer length is supposed 
to 
calculate the required size for the buffer if you actually did transcode it; 
Metrowerks always returns 0.

I was able to go through the code provided by 1.0.1 and work around this, but I 
still had all kinds of trouble.

There's another problem in getting things to compile, in that an XMLCh won't be 
automatically cast to a wchar_t (or XMLCh* to wchar_t*) by the compiler and you 
have to put in casts.

I recall having this same problem on the macintosh with some other code from 
Windows that I was porting for another project; I think a wchar_t is two bytes 
under metrowerks but the compiler just doesn't consider it an integer value.

Maybe I'm wrong and it's 4 bytes or something and then I'd be all screwed up.  
But if you actually do pass a buffer to the ANSI widechar routines, they mostly 
get transcoded right.

My problem is that I get all kinds of weird crashes.  It's been frustrating 
because it 
locks up the machine a lot.  I guess Win98 doesn't have protected memory - 
maybe I should try to install NT on my laptop for development, I've got a 
partition 
set aside for it.

Unfortunately it's not really an option to switch compilers at this point.  I 
could 
possibly do it later.  The problem is that I've got a mountain of someone 
else's 
cross-platform GUI code that compiles and runs just fine on Metrowerks for Mac, 
Windows and BeOS.  I spoke to the author about making it run under Visual C++ 
and he thought it would "probably work" but I don't want to be the one to find 
all 
the weird problems that will result!

Don't tell me about standards, there ain't no [EMAIL PROTECTED]&*( standards!

Mike

Reply via email to