dbertoni    02/02/06 17:39:58

  Modified:    c/src/PlatformSupport XalanOutputStream.cpp
                        XalanOutputStream.hpp
                        XalanToXercesTranscoderWrapper.cpp
                        XalanToXercesTranscoderWrapper.hpp
                        XalanTranscodingServices.cpp
                        XalanTranscodingServices.hpp
                        XalanUTF16Transcoder.cpp XalanUTF16Transcoder.hpp
  Log:
  Added basic support for determining if a Unicode character can be represented in the 
output encoding.
  
  Revision  Changes    Path
  1.15      +20 -0     xml-xalan/c/src/PlatformSupport/XalanOutputStream.cpp
  
  Index: XalanOutputStream.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanOutputStream.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- XalanOutputStream.cpp     26 Sep 2001 21:52:46 -0000      1.14
  +++ XalanOutputStream.cpp     7 Feb 2002 01:39:58 -0000       1.15
  @@ -299,6 +299,26 @@
   
   
   
  +bool
  +XalanOutputStream::canTranscodeTo(unsigned int               theChar) const
  +{
  +     if (m_transcoder != 0)
  +     {
  +             return m_transcoder->canTranscodeTo(theChar);
  +     }
  +     else
  +     {
  +             // We'll always return true here, since an exception will be
  +             // thrown when we try to transcode.  We'ed like to enable the
  +             // commented out line, if we can ever figure out how to see
  +             // if a character can be encoded.
  +             return true;
  +//           return XalanTranscodingServices::canTranscodeToLocalCodePage(theChar);
  +     }
  +}
  +
  +
  +
   void
   XalanOutputStream::flushBuffer()
   {
  
  
  
  1.9       +9 -0      xml-xalan/c/src/PlatformSupport/XalanOutputStream.hpp
  
  Index: XalanOutputStream.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanOutputStream.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XalanOutputStream.hpp     26 Sep 2001 14:10:31 -0000      1.8
  +++ XalanOutputStream.hpp     7 Feb 2002 01:39:58 -0000       1.9
  @@ -235,6 +235,15 @@
        setOutputEncoding(const XalanDOMString&         theEncoding);
   
        /**
  +      * Determine if a given value can be represented in
  +      * the output encoding.
  +      *
  +      * @return true if the value can be represented, and false if not.
  +      */
  +    bool
  +     canTranscodeTo(unsigned int             theChar) const;
  +
  +     /**
         * Set the flag that indicates whether a transcoding
         * error should throw an exception.  The default is
         * to throw an exception.  If this flag is false, and
  
  
  
  1.6       +10 -2     
xml-xalan/c/src/PlatformSupport/XalanToXercesTranscoderWrapper.cpp
  
  Index: XalanToXercesTranscoderWrapper.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/PlatformSupport/XalanToXercesTranscoderWrapper.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XalanToXercesTranscoderWrapper.cpp        26 Sep 2001 21:55:34 -0000      1.5
  +++ XalanToXercesTranscoderWrapper.cpp        7 Feb 2002 01:39:58 -0000       1.6
  @@ -67,9 +67,9 @@
   
   
   
  -XalanToXercesTranscoderWrapper::XalanToXercesTranscoderWrapper(XMLTranscoder*       
 theTranscoder) :
  +XalanToXercesTranscoderWrapper::XalanToXercesTranscoderWrapper(XMLTranscoder&       
 theTranscoder) :
        XalanOutputTranscoder(),
  -     m_transcoder(theTranscoder)
  +     m_transcoder(&theTranscoder)
   {
   }
   
  @@ -165,4 +165,12 @@
        }
   
        return theCode;
  +}
  +
  +
  +
  +bool
  +XalanToXercesTranscoderWrapper::canTranscodeTo(unsigned int          theChar) const
  +{
  +     return m_transcoder->canTranscodeTo(theChar);
   }
  
  
  
  1.4       +4 -1      
xml-xalan/c/src/PlatformSupport/XalanToXercesTranscoderWrapper.hpp
  
  Index: XalanToXercesTranscoderWrapper.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/PlatformSupport/XalanToXercesTranscoderWrapper.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XalanToXercesTranscoderWrapper.hpp        25 Sep 2001 21:12:51 -0000      1.3
  +++ XalanToXercesTranscoderWrapper.hpp        7 Feb 2002 01:39:58 -0000       1.4
  @@ -78,7 +78,7 @@
   public:
   
        explicit
  -     XalanToXercesTranscoderWrapper(XMLTranscoder*   theTranscoder);
  +     XalanToXercesTranscoderWrapper(XMLTranscoder&   theTranscoder);
      
        virtual
        ~XalanToXercesTranscoderWrapper();
  @@ -101,6 +101,9 @@
                        size_t&                                 
theSourceCharsTranscoded,
                        size_t&                                 theTargetBytesUsed,
                        unsigned char*                  theCharSizes);
  +
  +     virtual bool
  +     canTranscodeTo(unsigned int             theChar) const;
   
   private:
   
  
  
  
  1.12      +1 -1      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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XalanTranscodingServices.cpp      26 Sep 2001 21:57:07 -0000      1.11
  +++ XalanTranscodingServices.cpp      7 Feb 2002 01:39:58 -0000       1.12
  @@ -234,7 +234,7 @@
   
                if (theResult == XalanTranscodingServices::OK)
                {
  -                     theTranscoder = new 
XalanToXercesTranscoderWrapper(theXercesTranscoder);
  +                     theTranscoder = new 
XalanToXercesTranscoderWrapper(*theXercesTranscoder);
                }
        }
   
  
  
  
  1.7       +13 -0     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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XalanTranscodingServices.hpp      25 Sep 2001 21:12:51 -0000      1.6
  +++ XalanTranscodingServices.hpp      7 Feb 2002 01:39:58 -0000       1.7
  @@ -217,6 +217,9 @@
   
        /**
         * Get the maximum character value for the local code page.
  +      * This is now deprecated, since it's impossibly broken.
  +      *
  +      * @deprecated
         *
         * @return The maximum character value the local code page supports.
         */
  @@ -233,6 +236,13 @@
        static bool
        getBytesEqualChars(const XalanDOMString&        theEncoding);
   
  +     static bool
  +     canTranscodeToLocalCodePage(unsigned int        theChar)
  +     {
  +             // Yuck!! See getMaximumCharacterValue() for more details.
  +             return theChar <= 0x7fu ? true : false;
  +     }
  +
        static const XalanDOMChar       s_utf8String[];
   
        static const XalanDOMChar       s_utf16String[];
  @@ -342,6 +352,9 @@
                        size_t&                                 
theSourceCharsTranscoded,
                        size_t&                                 theTargetBytesUsed,
                        unsigned char*                  theCharSizes) = 0;
  +
  +     virtual bool
  +     canTranscodeTo(unsigned int             theChar) const = 0;
   
   private:
   
  
  
  
  1.6       +8 -0      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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XalanUTF16Transcoder.cpp  25 Sep 2001 21:12:51 -0000      1.5
  +++ XalanUTF16Transcoder.cpp  7 Feb 2002 01:39:58 -0000       1.6
  @@ -166,3 +166,11 @@
   
        return XalanTranscodingServices::OK;
   }
  +
  +
  +
  +bool
  +XalanUTF16Transcoder::canTranscodeTo(unsigned int    /* theChar */) const
  +{
  +     return true;
  +}
  
  
  
  1.4       +3 -0      xml-xalan/c/src/PlatformSupport/XalanUTF16Transcoder.hpp
  
  Index: XalanUTF16Transcoder.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanUTF16Transcoder.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XalanUTF16Transcoder.hpp  25 Sep 2001 21:12:51 -0000      1.3
  +++ XalanUTF16Transcoder.hpp  7 Feb 2002 01:39:58 -0000       1.4
  @@ -122,6 +122,9 @@
                        size_t&                                 theTargetBytesUsed,
                        unsigned char*                  theCharSizes);
   
  +     virtual bool
  +     canTranscodeTo(unsigned int             theChar) const;
  +
   private:
   
        // Not implemented...
  
  
  

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

Reply via email to