dbertoni    00/11/20 08:18:56

  Modified:    c/src/XMLSupport FormatterToText.cpp FormatterToText.hpp
  Log:
  Added option to bypass CR/LF normalization.
  
  Revision  Changes    Path
  1.12      +34 -17    xml-xalan/c/src/XMLSupport/FormatterToText.cpp
  
  Index: FormatterToText.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToText.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FormatterToText.cpp       2000/11/02 01:45:51     1.11
  +++ FormatterToText.cpp       2000/11/20 16:18:52     1.12
  @@ -72,11 +72,15 @@
   
   
   
  -FormatterToText::FormatterToText(Writer&     writer) :
  +FormatterToText::FormatterToText(
  +                     Writer&         writer,
  +                     bool            normalizeLinefeed) :
        FormatterListener(OUTPUT_METHOD_TEXT),
        m_writer(writer),
        m_maxCharacter(~0),
  -     m_encoding()
  +     m_encoding(),
  +     m_haveEncoding(false),
  +     m_normalize(normalizeLinefeed)
   {
   }
   
  @@ -84,11 +88,14 @@
   
   FormatterToText::FormatterToText(
                        Writer&                                 writer,
  -                     const XalanDOMString&   encoding) :
  +                     const XalanDOMString&   encoding,
  +                     bool                                    
normalizeLinefeed) :
        FormatterListener(OUTPUT_METHOD_TEXT),
        m_writer(writer),
        m_maxCharacter(0),
  -     m_encoding(isEmpty(encoding) == false ? encoding : 
XalanDOMString(XalanTranscodingServices::s_utf8String))
  +     m_encoding(isEmpty(encoding) == false ? encoding : 
XalanDOMString(XalanTranscodingServices::s_utf8String)),
  +     m_haveEncoding(true),
  +     m_normalize(normalizeLinefeed)
   {
        XalanOutputStream* const        theStream = m_writer.getStream();
   
  @@ -175,23 +182,33 @@
                        const XMLCh* const      chars,
                        const unsigned int      length)
   {
  -     for (unsigned int i = 0; i < length; ++i)
  +     if (m_normalize == false && m_haveEncoding == false)
        {
  -#if defined(XALAN_NEWLINE_IS_CRLF)
  -             // Normalize LF to CR/LF...
  -             if (chars[i] == XalanUnicode::charLF &&
  -                     (i == 0 ||
  -                      chars[i - 1] != XalanUnicode::charCR))
  +             m_writer.write(chars, 0, length);
  +     }
  +     else
  +     {
  +             for (unsigned int i = 0; i < length; ++i)
                {
  -                     m_writer.write(XalanUnicode::charCR);
  -             }
  +#if defined(XALAN_NEWLINE_IS_CRLF)
  +                     if (m_normalize == true)
  +                     {
  +                             // Normalize LF to CR/LF...
  +                             if (chars[i] == XalanUnicode::charLF &&
  +                                     (i == 0 ||
  +                                      chars[i - 1] != XalanUnicode::charCR))
  +                             {
  +                                     m_writer.write(XalanUnicode::charCR);
  +                             }
  +                     }
   #endif
  -             if (chars[i] > m_maxCharacter)
  -             {
  -                     //$$$ ToDo: Figure out what we're going to do here...
  -             }
  +                     if (chars[i] > m_maxCharacter)
  +                     {
  +                             //$$$ ToDo: Figure out what we're going to do 
here...
  +                     }
   
  -             m_writer.write(chars[i]);
  +                     m_writer.write(chars[i]);
  +             }
        }
   }
   
  
  
  
  1.7       +18 -8     xml-xalan/c/src/XMLSupport/FormatterToText.hpp
  
  Index: FormatterToText.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToText.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FormatterToText.hpp       2000/10/07 15:25:34     1.6
  +++ FormatterToText.hpp       2000/11/20 16:18:53     1.7
  @@ -90,18 +90,23 @@
         * FormatterToText instance constructor.
         *
         * @param writer writer for output
  +      * @param normalizeLindefeed Normalize \n or \r\n (on certain 
platforms).
         */
  -     FormatterToText(Writer&         writer);
  +     FormatterToText(
  +                     Writer&         writer,
  +                     bool            normalizeLinefeed = true);
   
        /**
         * FormatterToText instance constructor.
         *
         * @param writer writer for output
         * @param encoding character encoding for the writer
  +      * @param normalizeLindefeed Normalize \n or \r\n on certain platforms.
         */
        FormatterToText(
                        Writer&                                 writer,
  -                     const XalanDOMString&   encoding);
  +                     const XalanDOMString&   encoding,
  +                     bool                                    
normalizeLinefeed = true);
   
        virtual
        ~FormatterToText();
  @@ -163,12 +168,6 @@
   
   private:
   
  -     Writer&                 m_writer;
  -
  -     XalanDOMChar    m_maxCharacter;
  -
  -     XalanDOMString  m_encoding;
  -
        // These are not implemented.
        FormatterToText(const FormatterToText&);
   
  @@ -177,6 +176,17 @@
   
        bool
        operator==(const FormatterToText&) const;
  +
  +     // Data members...
  +     Writer&                 m_writer;
  +
  +     XalanDOMChar    m_maxCharacter;
  +
  +     XalanDOMString  m_encoding;
  +
  +     const bool              m_haveEncoding;
  +
  +     const bool              m_normalize;
   };
   
   
  
  
  

Reply via email to