zongaro     2003/07/31 18:03:06

  Modified:    java/src/org/apache/xml/serializer ToHTMLStream.java
  Log:
  Made a couple of improvements to startElement and endElement to cache
  m_elemContext in a local variable.  Also, replaced calls to ElemDesc.is with a
  single call to ElemDesc.getFlags, and used inline code to check flag settings.
  
  Reviewed by Brian Minchau ([EMAIL PROTECTED]).
  
  Revision  Changes    Path
  1.22      +28 -22    
xml-xalan/java/src/org/apache/xml/serializer/ToHTMLStream.java
  
  Index: ToHTMLStream.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/serializer/ToHTMLStream.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ToHTMLStream.java 9 Jul 2003 21:02:31 -0000       1.21
  +++ ToHTMLStream.java 1 Aug 2003 01:03:06 -0000       1.22
  @@ -711,11 +711,13 @@
           throws org.xml.sax.SAXException
       {
   
  +        ElemContext elemContext = m_elemContext;
  +
           // clean up any pending things first
  -        if (m_elemContext.m_startTagOpen)
  +        if (elemContext.m_startTagOpen)
           {
               closeStartTag();
  -            m_elemContext.m_startTagOpen = false;
  +            elemContext.m_startTagOpen = false;
           }
           else if (m_cdataTagOpen)
           {
  @@ -740,16 +742,17 @@
           try
           {
               ElemDesc elemDesc = getElemDesc(name);
  +            int elemFlags = elemDesc.getFlags();
  +
               // deal with indentation issues first
               if (m_doIndent)
               {
   
  -                boolean isBlockElement = elemDesc.is(ElemDesc.BLOCK);
  -                isBlockElement = elemDesc.is(ElemDesc.BLOCK);
  +                boolean isBlockElement = (elemFlags & ElemDesc.BLOCK) != 0;
                   if (m_ispreserve)
                       m_ispreserve = false;
                   else if (
  -                    (null != m_elemContext.m_elementName)
  +                    (null != elemContext.m_elementName)
                       && (!m_inBlockElem
                           || isBlockElement) /* && !isWhiteSpaceSensitive */
                       )
  @@ -776,11 +779,11 @@
               if (m_tracer != null)
                   firePseudoAttributes();
               
  -            if (elemDesc.is(ElemDesc.EMPTY) )  
  +            if ((elemFlags & ElemDesc.EMPTY) != 0)  
               {
                   // an optimization for elements which are expected
                   // to be empty.
  -                m_elemContext = m_elemContext.push();
  +                m_elemContext = elemContext.push();
                   /* XSLTC sometimes calls namespaceAfterStartElement()
                    * so we need to remember the name
                    */
  @@ -790,17 +793,18 @@
               } 
               else
               {
  -                m_elemContext = 
m_elemContext.push(namespaceURI,localName,name);
  -                m_elemContext.m_elementDesc = elemDesc;
  -                m_elemContext.m_isRaw = elemDesc.is(ElemDesc.RAW);
  +                elemContext = elemContext.push(namespaceURI,localName,name);
  +                m_elemContext = elemContext;
  +                elemContext.m_elementDesc = elemDesc;
  +                elemContext.m_isRaw = (elemFlags & ElemDesc.RAW) != 0;
               }
               
   
  -            if (elemDesc.is(ElemDesc.HEADELEM))
  +            if ((elemFlags & ElemDesc.HEADELEM) != 0)
               {
                   // This is the <HEAD> element, do some special processing
                   closeStartTag();
  -                m_elemContext.m_startTagOpen = false;
  +                elemContext.m_startTagOpen = false;
                   if (!m_omitMetaTag)
                   {
                       if (m_doIndent)
  @@ -851,13 +855,15 @@
           try
           {
   
  -            final ElemDesc elemDesc = m_elemContext.m_elementDesc;
  -            final boolean elemEmpty = elemDesc.is(ElemDesc.EMPTY);
  +            ElemContext elemContext = m_elemContext;
  +            final ElemDesc elemDesc = elemContext.m_elementDesc;
  +            final int elemFlags = elemDesc.getFlags();
  +            final boolean elemEmpty = (elemFlags & ElemDesc.EMPTY) != 0;
   
               // deal with any indentation issues
               if (m_doIndent)
               {
  -                final boolean isBlockElement = elemDesc.is(ElemDesc.BLOCK);
  +                final boolean isBlockElement = (elemFlags&ElemDesc.BLOCK) != 
0;
                   boolean shouldIndent = false;
   
                   if (m_ispreserve)
  @@ -869,13 +875,13 @@
                       m_startNewLine = true;
                       shouldIndent = true;
                   }
  -                if (!m_elemContext.m_startTagOpen && shouldIndent)
  -                    indent(m_elemContext.m_currentElemDepth - 1);
  +                if (!elemContext.m_startTagOpen && shouldIndent)
  +                    indent(elemContext.m_currentElemDepth - 1);
                   m_inBlockElem = !isBlockElement;
               }
   
               final java.io.Writer writer = m_writer;
  -            if (!m_elemContext.m_startTagOpen)
  +            if (!elemContext.m_startTagOpen)
               {
                   writer.write("</");
                   writer.write(name);
  @@ -916,7 +922,7 @@
               }
               
               // clean up because the element has ended
  -            if (elemDesc.is(ElemDesc.WHITESPACESENSITIVE))
  +            if ((elemFlags & ElemDesc.WHITESPACESENSITIVE) != 0)
                   m_ispreserve = true;
               m_isprevtext = false;
   
  @@ -930,17 +936,17 @@
                   // a quick exit if the HTML element had no children.
                   // This block of code can be removed if the corresponding 
block of code
                   // in startElement() also labeled with "OPTIMIZE-EMPTY" is 
also removed
  -                m_elemContext = m_elemContext.m_prev;
  +                m_elemContext = elemContext.m_prev;
                   return;
               }
   
               // some more clean because the element has ended. 
  -            if (!m_elemContext.m_startTagOpen)
  +            if (!elemContext.m_startTagOpen)
               {
                   if (m_doIndent && !m_preserves.isEmpty())
                       m_preserves.pop();
               }
  -            m_elemContext = m_elemContext.m_prev;
  +            m_elemContext = elemContext.m_prev;
   //            m_isRawStack.pop();
           }
           catch (IOException e)
  
  
  

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

Reply via email to