dbertoni    2002/09/05 15:01:30

  Modified:    c/src/XMLSupport FormatterToXML.cpp FormatterToXML.hpp
                        XMLSupportInit.cpp
  Log:
  Reduce start-up dynamic memory utilization.
  
  Revision  Changes    Path
  1.60      +171 -88   xml-xalan/c/src/XMLSupport/FormatterToXML.cpp
  
  Index: FormatterToXML.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToXML.cpp,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- FormatterToXML.cpp        5 Sep 2002 01:39:05 -0000       1.59
  +++ FormatterToXML.cpp        5 Sep 2002 22:01:29 -0000       1.60
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -152,7 +152,7 @@
        {
                if(startsWith(
                        m_doctypePublic,
  -                     s_xhtmlDocType) == true)
  +                     s_xhtmlDocTypeString) == true)
                {
                        m_spaceBeforeClose = true;
                }
  @@ -383,13 +383,15 @@
   void
   FormatterToXML::outputDocTypeDecl(const XalanDOMChar*        name)
   {
  -     accumName(s_doctypeHeaderStartString);  // "<!DOCTYPE "
  +     // "<!DOCTYPE "
  +     accumName(s_doctypeHeaderStartString, 0, 
s_doctypeHeaderStartStringLength);
   
        accumName(name);
          
        if(length(m_doctypePublic) != 0)
        {
  -             accumName(s_doctypeHeaderPublicString); // " PUBLIC \""
  +             // " PUBLIC \""
  +             accumName(s_doctypeHeaderPublicString, 0, 
s_doctypeHeaderPublicStringLength);
                accumName(m_doctypePublic);
                accumName(XalanUnicode::charQuoteMark);
                accumName(XalanUnicode::charSpace);
  @@ -397,7 +399,8 @@
        }
        else
        {
  -             accumName(s_doctypeHeaderSystemString); // " SYSTEM \""
  +             // " SYSTEM \""
  +             accumName(s_doctypeHeaderSystemString, 0, 
s_doctypeHeaderSystemStringLength);
        }
   
        accumName(m_doctypeSystem);
  @@ -927,7 +930,8 @@
   
                if(m_shouldWriteXMLHeader == true)
                {
  -                     accumName(s_xmlHeaderStartString);      // "<?xml 
version=\""
  +                     // "<?xml version=\""
  +                     accumName(s_xmlHeaderStartString, 0, 
s_xmlHeaderStartStringLength);
   
                        if (length(m_version) != 0)
                        {
  @@ -935,20 +939,21 @@
                        }
                        else
                        {
  -                             accumName(s_defaultVersionString);
  +                             accumName(s_defaultVersionString, 0, 
s_defaultVersionStringLength);
                        }
   
  -                     accumName(s_xmlHeaderEncodingString);   // "\" 
encoding=\""
  +                     // "\" encoding=\""
  +                     accumName(s_xmlHeaderEncodingString, 0, 
s_xmlHeaderEncodingStringLength);
   
                        accumName(m_encoding);
   
                        if (length(m_standalone) != 0)
                        {
  -                             accumName(s_xmlHeaderStandaloneString);
  +                             accumName(s_xmlHeaderStandaloneString, 0, 
s_xmlHeaderStandaloneStringLength);
                                accumName(m_standalone);
                        }
   
  -                     accumName(s_xmlHeaderEndString);
  +                     accumName(s_xmlHeaderEndString, 0, 
s_xmlHeaderEndStringLength);
   
                        outputLineSep();
                }          
  @@ -1272,7 +1277,7 @@
                {
                        if(i != 0)
                        {
  -                             accumContent(s_dtdCDATACloseString);
  +                             accumContent(s_dtdCDATACloseString, 0, 
s_dtdCDATACloseStringLength);
                        }
   
                        // This needs to go into a function... 
  @@ -1692,105 +1697,183 @@
   
   
   
  -static XalanDOMString        s_defaultMIMEEncoding;
  +#define FXML_SIZE(str)       ((sizeof(str) / sizeof(str[0]) - 1))
   
  -static XalanDOMString        s_doctypeHeaderStartString;
  -
  -static XalanDOMString        s_doctypeHeaderPublicString;
  -
  -static XalanDOMString        s_doctypeHeaderSystemString;
  -
  -static XalanDOMString        s_defaultVersionString;
  -
  -static XalanDOMString        s_xmlHeaderStartString;
  -
  -static XalanDOMString        s_xmlHeaderEncodingString;
  -
  -static XalanDOMString        s_xmlHeaderStandaloneString;
  -
  -static XalanDOMString        s_xmlHeaderEndString;
  -
  -static XalanDOMString        s_xhtmlDocType;
  -
  -static XalanDOMString        s_dtdCDATACloseString;
  -
  -
  -const XalanDOMString&        FormatterToXML::s_defaultMIMEEncoding = 
::s_defaultMIMEEncoding;
  -
  -const XalanDOMString&        FormatterToXML::s_doctypeHeaderStartString = 
::s_doctypeHeaderStartString;
  -
  -const XalanDOMString&        FormatterToXML::s_doctypeHeaderPublicString = 
::s_doctypeHeaderPublicString;
  -
  -const XalanDOMString&        FormatterToXML::s_doctypeHeaderSystemString = 
::s_doctypeHeaderSystemString;
  -
  -const XalanDOMString&        FormatterToXML::s_defaultVersionString = 
::s_defaultVersionString;
  -
  -const XalanDOMString&        FormatterToXML::s_xmlHeaderStartString = 
::s_xmlHeaderStartString;
  -
  -const XalanDOMString&        FormatterToXML::s_xmlHeaderEncodingString = 
::s_xmlHeaderEncodingString;
  -
  -const XalanDOMString&        FormatterToXML::s_xmlHeaderStandaloneString = 
::s_xmlHeaderStandaloneString;
  -
  -const XalanDOMString&        FormatterToXML::s_xmlHeaderEndString = 
::s_xmlHeaderEndString;
  -
  -const XalanDOMString&                        FormatterToXML::s_xhtmlDocType 
= ::s_xhtmlDocType;
  -
  -const XalanDOMString&                        
FormatterToXML::s_dtdCDATACloseString = ::s_dtdCDATACloseString;
  -
  -const FormatterToXML::DOMCharBufferType::size_type   
FormatterToXML::s_maxBufferSize = 512;
  -
  -
  -
  -void
  -FormatterToXML::initialize()
  +const XalanDOMChar                                           
FormatterToXML::s_doctypeHeaderStartString[] =
   {
  -     ::s_defaultMIMEEncoding = XALAN_STATIC_UCODE_STRING("UTF-8");
  +     XalanUnicode::charLessThanSign,
  +     XalanUnicode::charExclamationMark,
  +     XalanUnicode::charLetter_D,
  +     XalanUnicode::charLetter_O,
  +     XalanUnicode::charLetter_C,
  +     XalanUnicode::charLetter_T,
  +     XalanUnicode::charLetter_Y,
  +     XalanUnicode::charLetter_P,
  +     XalanUnicode::charLetter_E,
  +     XalanUnicode::charSpace,
  +     0
  +};
   
  -     ::s_doctypeHeaderStartString = XALAN_STATIC_UCODE_STRING("<!DOCTYPE ");
  +const FormatterToXML::size_type                      
FormatterToXML::s_doctypeHeaderStartStringLength =
  +             FXML_SIZE(s_doctypeHeaderStartString);
   
  -     ::s_doctypeHeaderPublicString = XALAN_STATIC_UCODE_STRING(" PUBLIC \"");
  +const XalanDOMChar                                           
FormatterToXML::s_doctypeHeaderPublicString[] =
  +{
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charLetter_P,
  +     XalanUnicode::charLetter_U,
  +     XalanUnicode::charLetter_B,
  +     XalanUnicode::charLetter_L,
  +     XalanUnicode::charLetter_I,
  +     XalanUnicode::charLetter_C,
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charQuoteMark,
  +     0
  +};
   
  -     ::s_doctypeHeaderSystemString = XALAN_STATIC_UCODE_STRING(" SYSTEM \"");
  +const FormatterToXML::size_type              
FormatterToXML::s_doctypeHeaderPublicStringLength =
  +             FXML_SIZE(s_doctypeHeaderPublicString);
   
  -     ::s_defaultVersionString = XALAN_STATIC_UCODE_STRING("1.0");
  +const XalanDOMChar                                   
FormatterToXML::s_doctypeHeaderSystemString[] =
  +{
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charLetter_S,
  +     XalanUnicode::charLetter_Y,
  +     XalanUnicode::charLetter_S,
  +     XalanUnicode::charLetter_T,
  +     XalanUnicode::charLetter_E,
  +     XalanUnicode::charLetter_M,
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charQuoteMark,
  +     0
  +};
   
  -     ::s_xmlHeaderStartString = XALAN_STATIC_UCODE_STRING("<?xml 
version=\"");
  +const FormatterToXML::size_type              
FormatterToXML::s_doctypeHeaderSystemStringLength =
  +             FXML_SIZE(s_doctypeHeaderSystemString);
   
  -     ::s_xmlHeaderEncodingString = XALAN_STATIC_UCODE_STRING("\" 
encoding=\"");
  +const XalanDOMChar                                   
FormatterToXML::s_xmlHeaderStartString[] =
  +{
  +     XalanUnicode::charLessThanSign,
  +     XalanUnicode::charQuestionMark,
  +     XalanUnicode::charLetter_x,
  +     XalanUnicode::charLetter_m,
  +     XalanUnicode::charLetter_l,
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charLetter_v,
  +     XalanUnicode::charLetter_e,
  +     XalanUnicode::charLetter_r,
  +     XalanUnicode::charLetter_s,
  +     XalanUnicode::charLetter_i,
  +     XalanUnicode::charLetter_o,
  +     XalanUnicode::charLetter_n,
  +     XalanUnicode::charEqualsSign,
  +     XalanUnicode::charQuoteMark,
  +     0
  +};
   
  -     ::s_xmlHeaderStandaloneString = XALAN_STATIC_UCODE_STRING("\" 
standalone=\"");
  +const FormatterToXML::size_type              
FormatterToXML::s_xmlHeaderStartStringLength =
  +             FXML_SIZE(s_xmlHeaderStartString);
   
  -     ::s_xmlHeaderEndString = XALAN_STATIC_UCODE_STRING("\"?>");
  +const XalanDOMChar                                   
FormatterToXML::s_xmlHeaderEncodingString[] =
  +{
  +     XalanUnicode::charQuoteMark,
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charLetter_e,
  +     XalanUnicode::charLetter_n,
  +     XalanUnicode::charLetter_c,
  +     XalanUnicode::charLetter_o,
  +     XalanUnicode::charLetter_d,
  +     XalanUnicode::charLetter_i,
  +     XalanUnicode::charLetter_n,
  +     XalanUnicode::charLetter_g,
  +     XalanUnicode::charEqualsSign,
  +     XalanUnicode::charQuoteMark,
  +     0
  +};
   
  -     ::s_xhtmlDocType = XALAN_STATIC_UCODE_STRING("-//W3C//DTD XHTML");
  -                             
  -     ::s_dtdCDATACloseString = XALAN_STATIC_UCODE_STRING("]]>");
  -}
  +const FormatterToXML::size_type              
FormatterToXML::s_xmlHeaderEncodingStringLength =
  +             FXML_SIZE(s_xmlHeaderEncodingString);
   
  +const XalanDOMChar                                   
FormatterToXML::s_xmlHeaderStandaloneString[] =
  +{
  +     XalanUnicode::charQuoteMark,
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charLetter_s,
  +     XalanUnicode::charLetter_t,
  +     XalanUnicode::charLetter_a,
  +     XalanUnicode::charLetter_n,
  +     XalanUnicode::charLetter_d,
  +     XalanUnicode::charLetter_a,
  +     XalanUnicode::charLetter_l,
  +     XalanUnicode::charLetter_o,
  +     XalanUnicode::charLetter_n,
  +     XalanUnicode::charLetter_e,
  +     XalanUnicode::charEqualsSign,
  +     XalanUnicode::charQuoteMark,
  +     0
  +};
   
  +const FormatterToXML::size_type              
FormatterToXML::s_xmlHeaderStandaloneStringLength =
  +             FXML_SIZE(s_xmlHeaderStandaloneString);
   
  -void
  -FormatterToXML::terminate()
  +const XalanDOMChar                                   
FormatterToXML::s_xmlHeaderEndString[] =
   {
  -     releaseMemory(::s_defaultMIMEEncoding);
  +     XalanUnicode::charQuoteMark,
  +     XalanUnicode::charQuestionMark,
  +     XalanUnicode::charGreaterThanSign,
  +     0
  +};
   
  -     releaseMemory(::s_doctypeHeaderStartString);
  +const FormatterToXML::size_type              
FormatterToXML::s_xmlHeaderEndStringLength =
  +             FXML_SIZE(s_xmlHeaderEndString);
   
  -     releaseMemory(::s_doctypeHeaderPublicString);
  +const XalanDOMChar                                   
FormatterToXML::s_defaultVersionString[] =
  +{
  +     XalanUnicode::charDigit_1,
  +     XalanUnicode::charFullStop,
  +     XalanUnicode::charDigit_0,
  +     0
  +};
   
  -     releaseMemory(::s_doctypeHeaderSystemString);
  +const FormatterToXML::size_type              
FormatterToXML::s_defaultVersionStringLength =
  +             FXML_SIZE(s_defaultVersionString);
   
  -     releaseMemory(::s_defaultVersionString);
  +const XalanDOMChar                                   
FormatterToXML::s_dtdCDATACloseString[] =
  +{
  +     XalanUnicode::charRightSquareBracket,
  +     XalanUnicode::charRightSquareBracket,
  +     XalanUnicode::charGreaterThanSign,
  +     0
  +};
   
  -     releaseMemory(::s_xmlHeaderStartString);
  +const FormatterToXML::size_type              
FormatterToXML::s_dtdCDATACloseStringLength =
  +             FXML_SIZE(s_dtdCDATACloseString);
   
  -     releaseMemory(::s_xmlHeaderEncodingString);
   
  -     releaseMemory(::s_xmlHeaderStandaloneString);
  +const XalanDOMChar                                   
FormatterToXML::s_xhtmlDocTypeString[] =
  +{
  +     XalanUnicode::charHyphenMinus,
  +     XalanUnicode::charSolidus,
  +     XalanUnicode::charSolidus,
  +     XalanUnicode::charLetter_W,
  +     XalanUnicode::charDigit_3,
  +     XalanUnicode::charLetter_C,
  +     XalanUnicode::charSolidus,
  +     XalanUnicode::charSolidus,
  +     XalanUnicode::charLetter_D,
  +     XalanUnicode::charLetter_T,
  +     XalanUnicode::charLetter_D,
  +     XalanUnicode::charSpace,
  +     XalanUnicode::charLetter_X,
  +     XalanUnicode::charLetter_H,
  +     XalanUnicode::charLetter_T,
  +     XalanUnicode::charLetter_M,
  +     XalanUnicode::charLetter_L,
  +     0
  +};
   
  -     releaseMemory(::s_xmlHeaderEndString);
  +const FormatterToXML::size_type              
FormatterToXML::s_xhtmlDocTypeStringLength =
  +             FXML_SIZE(s_xhtmlDocTypeString);
   
  -     releaseMemory(::s_xhtmlDocType);
   
  -     releaseMemory(::s_dtdCDATACloseString);
  -}
  +const FormatterToXML::DOMCharBufferType::size_type   
FormatterToXML::s_maxBufferSize = 512;
  
  
  
  1.37      +34 -29    xml-xalan/c/src/XMLSupport/FormatterToXML.hpp
  
  Index: FormatterToXML.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToXML.hpp,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- FormatterToXML.hpp        27 Nov 2001 18:50:31 -0000      1.36
  +++ FormatterToXML.hpp        5 Sep 2002 22:01:29 -0000       1.37
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -102,18 +102,6 @@
        };
   
        /**
  -      * Perform static initialization.  See class XMLSupportInit.
  -      */
  -     static void
  -     initialize();
  -
  -     /**
  -      * Perform static shut down.  See class XMLSupportInit.
  -      */
  -     static void
  -     terminate();
  -
  -     /**
         * Constructor for customized encoding and doctype.
         *
         * @param writer            character output stream to use
  @@ -1067,60 +1055,77 @@
         */
        const XalanDOMString    m_attrSpecialChars;
   
  -     /**
  -      * The default MIME encoding.
  -      */
  -     static const XalanDOMString&    s_defaultMIMEEncoding;
  +     typedef XalanDOMString::size_type       size_type;
   
        /**
         * The string "<!DOCTYPE ".
         */
  -     static const XalanDOMString&    s_doctypeHeaderStartString;
  +     static const XalanDOMChar       s_doctypeHeaderStartString[];
  +
  +     static const size_type          s_doctypeHeaderStartStringLength;
   
        /**
         * The string " PUBLIC \"".
         */
  -     static const XalanDOMString&    s_doctypeHeaderPublicString;
  +     static const XalanDOMChar       s_doctypeHeaderPublicString[];
  +
  +     static const size_type          s_doctypeHeaderPublicStringLength;
   
        /**
         * The string " SYSTEM \"".
         */
  -     static const XalanDOMString&    s_doctypeHeaderSystemString;
  +     static const XalanDOMChar       s_doctypeHeaderSystemString[];
  +
  +     static const size_type          s_doctypeHeaderSystemStringLength;
   
        /**
         * The string "<?xml version=\"".
         */
  -     static const XalanDOMString&    s_xmlHeaderStartString;
  +     static const XalanDOMChar       s_xmlHeaderStartString[];
  +
  +     static const size_type          s_xmlHeaderStartStringLength;
   
        /**
  -      * The string "<?xml version=\"".
  +      * The string "\" encoding=\"".
         */
  -     static const XalanDOMString&    s_xmlHeaderEncodingString;
  +     static const XalanDOMChar       s_xmlHeaderEncodingString[];
  +
  +     static const size_type          s_xmlHeaderEncodingStringLength;
   
        /**
         * The string "\" standalone=\"".
         */
  -     static const XalanDOMString&    s_xmlHeaderStandaloneString;
  +     static const XalanDOMChar       s_xmlHeaderStandaloneString[];
  +
  +     static const size_type          s_xmlHeaderStandaloneStringLength;
   
        /**
         * The string "\"?>".
         */
  -     static const XalanDOMString&    s_xmlHeaderEndString;
  +     static const XalanDOMChar       s_xmlHeaderEndString[];
  +
  +     static const size_type          s_xmlHeaderEndStringLength;
   
        /**
         * The string "1.0".
         */
  -     static const XalanDOMString&    s_defaultVersionString;
  +     static const XalanDOMChar       s_defaultVersionString[];
  +
  +     static const size_type          s_defaultVersionStringLength;
   
        /**
         * The string "-//W3C//DTD XHTML".
         */
  -     static const XalanDOMString&                    s_xhtmlDocType;
  +     static const XalanDOMChar       s_xhtmlDocTypeString[];
  +
  +     static const size_type          s_xhtmlDocTypeStringLength;
   
        /**
         * The string "]]>".
         */
  -     static const XalanDOMString&                    s_dtdCDATACloseString;
  +     static const XalanDOMChar       s_dtdCDATACloseString[];
  +
  +     static const size_type          s_dtdCDATACloseStringLength;
   
        DOMCharBufferType                                                       
m_charBuf;
   
  @@ -1187,7 +1192,7 @@
        /**
         * A pointer to the member function that will flush the buffer.
         */
  -     FlushFunctionType               m_flushFunction;
  +     FlushFunctionType                       m_flushFunction;
   };
   
   
  
  
  
  1.6       +1 -7      xml-xalan/c/src/XMLSupport/XMLSupportInit.cpp
  
  Index: XMLSupportInit.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/XMLSupportInit.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLSupportInit.cpp        5 Sep 2002 07:09:23 -0000       1.5
  +++ XMLSupportInit.cpp        5 Sep 2002 22:01:29 -0000       1.6
  @@ -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
  @@ -59,10 +59,6 @@
   
   
   
  -#include "FormatterToXML.hpp"
  -
  -
  -
   unsigned long        XMLSupportInit::s_initCounter = 0;
   
   
  @@ -96,7 +92,6 @@
   void
   XMLSupportInit::initialize()
   {
  -     FormatterToXML::initialize();
   }
   
   
  @@ -104,5 +99,4 @@
   void
   XMLSupportInit::terminate()
   {
  -     FormatterToXML::terminate();
   }
  
  
  

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

Reply via email to