dbertoni    02/04/17 21:50:50

  Modified:    c/src/PlatformSupport XalanTranscodingServices.cpp
                        XalanTranscodingServices.hpp
                        XalanUTF16Transcoder.cpp
  Log:
  Re-wrote code so there is no need to be aware of the endianness of the 
platform.
  
  Revision  Changes    Path
  1.14      +8 -12     
xml-xalan/c/src/PlatformSupport/XalanTranscodingServices.cpp
  
  Index: XalanTranscodingServices.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/PlatformSupport/XalanTranscodingServices.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XalanTranscodingServices.cpp      23 Feb 2002 04:17:46 -0000      1.13
  +++ XalanTranscodingServices.cpp      18 Apr 2002 04:50:50 -0000      1.14
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2000 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -161,17 +161,9 @@
   
   
   
  -const XalanTranscodingServices::XalanXMLByte 
XalanTranscodingServices::s_UTF16ByteOrderMark[] =
  +const XalanDOMChar   XalanTranscodingServices::s_UTF16ByteOrderMark[] =
   {
  -#if defined(XALAN_LITTLE_ENDIAN)
  -     XalanTranscodingServices::XalanXMLByte(0xFF),
  -     XalanTranscodingServices::XalanXMLByte(0xFE),
  -#elif defined(XALAN_BIG_ENDIAN)
  -     XalanTranscodingServices::XalanXMLByte(0xFE),
  -     XalanTranscodingServices::XalanXMLByte(0xFF),
  -#else
  -#error The platform must define the byte order!
  -#endif
  +     XalanDOMChar(0xFEFF),
        XalanTranscodingServices::XalanXMLByte(0)
   };
   
  @@ -286,7 +278,11 @@
   {
        if (compareIgnoreCaseASCII(c_wstr(theEncodingName), s_utf16String) == 0)
        {
  -             return s_UTF16ByteOrderMark;
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +             return (const XalanXMLByte*)s_UTF16ByteOrderMark;
  +#else
  +             return reinterpret_cast<const 
XalanXMLByte*>(s_UTF16ByteOrderMark);
  +#endif
        }
   #if 0
        // We won't do this for now...
  
  
  
  1.9       +1 -1      
xml-xalan/c/src/PlatformSupport/XalanTranscodingServices.hpp
  
  Index: XalanTranscodingServices.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/PlatformSupport/XalanTranscodingServices.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XalanTranscodingServices.hpp      23 Feb 2002 04:17:46 -0000      1.8
  +++ XalanTranscodingServices.hpp      18 Apr 2002 04:50:50 -0000      1.9
  @@ -287,7 +287,7 @@
   
        static const XalanXMLByte       s_dummyByteOrderMark[];
        static const XalanXMLByte       s_UTF8ByteOrderMark[];
  -     static const XalanXMLByte       s_UTF16ByteOrderMark[];
  +     static const XalanDOMChar       s_UTF16ByteOrderMark[];
   
        static const MaximumCharacterValueMapType&      
s_maximumCharacterValues;
   };
  
  
  
  1.7       +9 -22     xml-xalan/c/src/PlatformSupport/XalanUTF16Transcoder.cpp
  
  Index: XalanUTF16Transcoder.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanUTF16Transcoder.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XalanUTF16Transcoder.cpp  7 Feb 2002 01:39:58 -0000       1.6
  +++ XalanUTF16Transcoder.cpp  18 Apr 2002 04:50:50 -0000      1.7
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2000 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -96,20 +96,13 @@
                }
                else
                {
  -                     const XalanXMLByte      theHighByte = 
XalanXMLByte((theSourceData[theSourceEaten] & 0xFF00) >> 8);
  -                     const XalanXMLByte      theLowByte = 
XalanXMLByte(theSourceData[theSourceEaten] & 0x00FF);
  -
  -#if defined(XALAN_LITTLE_ENDIAN)
  -                     theTarget[theTargetPosition++] = theLowByte;
  -                     theTarget[theTargetPosition++] = theHighByte;
  -#elif defined(XALAN_BIG_ENDIAN)
  -                     theTarget[theTargetPosition++] = theHighByte;
  -                     theTarget[theTargetPosition++] = theLowByte;
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +                     *(XalanDOMChar*)(theTarget + theTargetPosition) = 
theSourceData[theSourceEaten++];
   #else
  -#error The platform must define the byte order!
  +                     *reinterpret_cast<XalanDOMChar*>(theTarget + 
theTargetPosition) = theSourceData[theSourceEaten++];
   #endif
   
  -                     ++theSourceEaten;
  +                     theTargetPosition += 2;
                }
        }
   
  @@ -135,7 +128,7 @@
        unsigned int    theSourceEaten = 0;
        unsigned int    theTargetPosition = 0;
   
  -     while(theSourceEaten < theSourceCount)
  +     while(theSourceEaten + 1 < theSourceCount)
        {
                // Swap bytes to big endian...
                if (theTargetPosition + 1 >= theTargetSize)
  @@ -144,17 +137,11 @@
                }
                else
                {
  -#if defined(XALAN_LITTLE_ENDIAN)
  -                     const XalanXMLByte      theLowByte = 
theSourceData[theSourceCount++];
  -                     const XalanXMLByte      theHighByte = 
theSourceData[theSourceCount++];
  -#elif defined(XALAN_BIG_ENDIAN)
  -                     const XalanXMLByte      theHighByte = 
theSourceData[theSourceCount++];
  -                     const XalanXMLByte      theLowByte = 
theSourceData[theSourceCount++];
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +                     theTarget[theTargetPosition++] = *(const 
XalanDOMChar*)(theSourceData + theSourceCount++);
   #else
  -#error The platform must define the byte order!
  +                     theTarget[theTargetPosition++] = 
*reinterpret_cast<const XalanDOMChar*>(theSourceData + theSourceCount++);
   #endif
  -
  -                     theTarget[theTargetPosition++] = 
XalanDOMChar((theHighByte << 8) | theLowByte);
   
                        *theCharSizes++ = 2;
                }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to