dbertoni    2002/08/23 14:20:42

  Modified:    c/src/XMLSupport FormatterToHTML.cpp FormatterToHTML.hpp
  Log:
  New implementation of element properties.
  
  Revision  Changes    Path
  1.73      +29 -679   xml-xalan/c/src/XMLSupport/FormatterToHTML.cpp
  
  Index: FormatterToHTML.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToHTML.cpp,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- FormatterToHTML.cpp       21 Aug 2002 23:42:07 -0000      1.72
  +++ FormatterToHTML.cpp       23 Aug 2002 21:20:42 -0000      1.73
  @@ -127,10 +127,9 @@
        m_isUTF8(XalanTranscodingServices::encodingIsUTF8(m_encoding)),
        m_elementLevel(0),
        m_hasNamespaceStack(),
  -     m_omitMetaTag(omitMetaTag)
  +     m_omitMetaTag(omitMetaTag),
  +     m_elementPropertiesStack()
   {
  -     assert(s_elementFlags != 0 && s_dummyDesc != 0);
  -
        initCharsMap();
   }
   
  @@ -199,26 +198,6 @@
   
   
   
  -const FormatterToHTML::ElemDesc&
  -FormatterToHTML::getElemDesc(const XalanDOMChar*     name)
  -{
  -     assert(s_elementFlags != 0 && s_dummyDesc != 0);
  -
  -     const ElementFlagsMapType::const_iterator       i =
  -             s_elementFlags->find(name);
  -
  -     if (i == s_elementFlags->end())
  -     {
  -             return *s_dummyDesc;
  -     }
  -     else
  -     {
  -             return (*i).second;
  -     }
  -}
  -
  -
  -
   void
   FormatterToHTML::startDocument()
   {
  @@ -236,6 +215,7 @@
        m_isRawStack.clear();
        m_inScriptElemStack.push_back(false);
        m_hasNamespaceStack.clear();
  +     m_elementPropertiesStack.clear();
   
        const bool      isEmptySystem = isEmpty(m_doctypeSystem);
   
  @@ -303,10 +283,15 @@
        {
                writeParentTagEnd();
   
  -             const ElemDesc&         elemDesc =
  -                             getElemDesc(name);
  +             const XalanHTMLElementsProperties::ElementProperties&   
elemProperties =
  +                     XalanHTMLElementsProperties::find(name);
  +             assert(elemProperties.null() == false);
  +
  +             // Push a copy onto the stack for endElement().  Don't worry --
  +             // the copy is cheap!
  +             m_elementPropertiesStack.push_back(elemProperties);
   
  -             const bool      isBlockElement = elemDesc.is(ElemDesc::BLOCK);
  +             const bool      isBlockElement = 
elemProperties.is(XalanHTMLElementsProperties::BLOCK);
   
                if (equalsIgnoreCaseASCII(name, c_wstr(s_scriptString)) == true)
                {
  @@ -342,7 +327,7 @@
   
                m_inBlockElem = !isBlockElement;
   
  -             m_isRawStack.push_back(elemDesc.is(ElemDesc::RAW));
  +             
m_isRawStack.push_back(elemProperties.is(XalanHTMLElementsProperties::RAW));
   
                accumContent(XalanUnicode::charLessThanSign);
   
  @@ -352,7 +337,7 @@
   
                for (unsigned int i = 0;  i < nAttrs ;  i++)
                {
  -                     processAttribute(attrs.getName(i), attrs.getValue(i), 
elemDesc);
  +                     processAttribute(attrs.getName(i), attrs.getValue(i), 
elemProperties);
                }
   
                // Flag the current element as not yet having any children.
  @@ -362,7 +347,7 @@
       
                m_isprevtext = false;
   
  -             if (elemDesc.is(ElemDesc::HEADELEM) == true)
  +             if (elemProperties.is(XalanHTMLElementsProperties::HEADELEM) == 
true)
                {
                        writeParentTagEnd();
   
  @@ -405,14 +390,18 @@
   
                assert(m_isRawStack.empty() == false);
                assert(m_inScriptElemStack.empty() == false);
  +             assert(m_elementPropertiesStack.empty() == false);
   
                m_isRawStack.pop_back();
                m_inScriptElemStack.pop_back();
  -    
  -             const ElemDesc&         elemDesc =
  -                             getElemDesc(name);
   
  -             const bool      isBlockElement = elemDesc.is(ElemDesc::BLOCK);
  +             const XalanHTMLElementsProperties::ElementProperties    
elemProperties =
  +                             m_elementPropertiesStack.back();
  +             assert(elemProperties.null() == false);
  +
  +             m_elementPropertiesStack.pop_back();
  +
  +             const bool      isBlockElement = 
elemProperties.is(XalanHTMLElementsProperties::BLOCK);
   
                bool shouldIndent = false;
   
  @@ -443,7 +432,7 @@
                }
                else
                {
  -                     if(elemDesc.is(ElemDesc::EMPTY) == false)
  +                     
if(elemProperties.is(XalanHTMLElementsProperties::EMPTY) == false)
                        {
                                accumContent(XalanUnicode::charGreaterThanSign);
   
  @@ -458,7 +447,7 @@
                        }
                }
   
  -             if (elemDesc.is(ElemDesc::WHITESPACESENSITIVE) == true)
  +             if 
(elemProperties.is(XalanHTMLElementsProperties::WHITESPACESENSITIVE) == true)
                {
                        m_ispreserve = true;
                }
  @@ -859,14 +848,14 @@
   
   void
   FormatterToHTML::processAttribute(
  -                     const XalanDOMChar*             name,
  -                     const XalanDOMChar*             value,
  -                     const ElemDesc&                 elemDesc)
  +                     const XalanDOMChar*                                     
                                        name,
  +                     const XalanDOMChar*                                     
                                        value,
  +                     const XalanHTMLElementsProperties::ElementProperties&   
elemProperties)
   {
       accumContent(XalanUnicode::charSpace);
   
       if((length(value) == 0 || equalsIgnoreCaseASCII(name, value)) &&
  -        elemDesc.isAttrFlagSet(name, ElemDesc::ATTREMPTY) == true)
  +        elemProperties.isAttribute(name, 
XalanHTMLElementsProperties::ATTREMPTY) == true)
       {
                accumName(name);
       }
  @@ -876,7 +865,7 @@
                accumContent(XalanUnicode::charEqualsSign);
                accumContent(XalanUnicode::charQuoteMark);
   
  -             if(elemDesc.isAttrFlagSet(name, ElemDesc::ATTRURL) == true)
  +             if(elemProperties.isAttribute(name, 
XalanHTMLElementsProperties::ATTRURL) == true)
                {
                        writeAttrURI(value);
                }
  @@ -1071,11 +1060,6 @@
   
   
   
  -typedef FormatterToHTML::ElementFlagsMapType ElementFlagsMapType;
  -typedef FormatterToHTML::ElemDesc                            ElemDesc;
  -
  -
  -
   bool
   FormatterToHTML::popHasNamespace()
   {
  @@ -1133,614 +1117,6 @@
   
   
   
  -static void
  -initializeElementFlagsMap1(ElementFlagsMapType&              theElementFlags)
  -{
  -#if defined(XALAN_NO_NAMESPACES)
  -     typedef pair<ElementFlagsMapType::iterator, bool>       PairType;
  -#else
  -     typedef std::pair<ElementFlagsMapType::iterator, bool>  PairType;
  -#endif
  -
  -     // HTML 4.0 loose DTD
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BASEFONT")),
  -                     ElemDesc(0|ElemDesc::EMPTY)));
  -
  -     PairType        theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("FRAME")),
  -                     ElemDesc(0|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("SRC")), 
ElemDesc::ATTRURL);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("FRAMESET")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("NOFRAMES")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  - 
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("ISINDEX")),
  -                     ElemDesc(0|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("APPLET")),
  -                     ElemDesc(0|ElemDesc::WHITESPACESENSITIVE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("CENTER")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DIR")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("MENU")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -
  -     // HTML 4.0 strict DTD
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TT")),
  -                     ElemDesc(0|ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("I")),
  -                     ElemDesc(0|ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("B")),
  -                     ElemDesc(0|ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BIG")),
  -                     ElemDesc(0|ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SMALL")),
  -                     ElemDesc(0|ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("EM")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("STRONG")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DFN")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("CODE")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SAMP")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("KBD")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("VAR")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("CITE")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("ABBR")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("ACRONYM")),
  -                     ElemDesc(0|ElemDesc::PHRASE)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SUP")),
  -                     ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SUB")),
  -                     ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SPAN")),
  -                     ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BDO")),
  -                     ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BR")),
  -                     
ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -     
  -}
  -
  -
  -
  -static void
  -initializeElementFlagsMap2(ElementFlagsMapType&              theElementFlags)
  -{
  -#if defined(XALAN_NO_NAMESPACES)
  -     typedef pair<ElementFlagsMapType::iterator, bool>       PairType;
  -#else
  -     typedef std::pair<ElementFlagsMapType::iterator, bool>  PairType;
  -#endif
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BODY")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("ADDRESS")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DIV")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -
  -     PairType        theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("A")),
  -                     ElemDesc(0|ElemDesc::SPECIAL)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("HREF")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("NAME")), 
ElemDesc::ATTRURL);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("MAP")),
  -                     
ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL|ElemDesc::BLOCK)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("AREA")),
  -                     ElemDesc(0|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("HREF")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("NOHREF")), 
ElemDesc::ATTREMPTY);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("LINK")),
  -                     
ElemDesc(0|ElemDesc::HEADMISC|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("IMG")),
  -                     
ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL|ElemDesc::EMPTY|ElemDesc::WHITESPACESENSITIVE)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("SRC")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("LONGDESC")),
 ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("USEMAP")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("ISMAP")), 
ElemDesc::ATTREMPTY);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("OBJECT")),
  -                     
ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL|ElemDesc::HEADMISC|ElemDesc::WHITESPACESENSITIVE)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CLASSID")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CODEBASE")),
 ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DATA")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("ARCHIVE")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("USEMAP")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DECLARE")), 
ElemDesc::ATTREMPTY);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("PARAM")),
  -                     ElemDesc(0|ElemDesc::EMPTY)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("HR")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET|ElemDesc::EMPTY)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("P")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("H1")),
  -                     ElemDesc(0|ElemDesc::HEAD|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("H2")),
  -                     ElemDesc(0|ElemDesc::HEAD|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("H3")),
  -                     ElemDesc(0|ElemDesc::HEAD|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("H4")),
  -                     ElemDesc(0|ElemDesc::HEAD|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("H5")),
  -                     ElemDesc(0|ElemDesc::HEAD|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("H6")),
  -                     ElemDesc(0|ElemDesc::HEAD|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("PRE")),
  -                     ElemDesc(0|ElemDesc::PREFORMATTED|ElemDesc::BLOCK)));
  -
  -}
  -
  -
  -
  -static void
  -initializeElementFlagsMap3(ElementFlagsMapType&              theElementFlags)
  -{
  -#if defined(XALAN_NO_NAMESPACES)
  -     typedef pair<ElementFlagsMapType::iterator, bool>       PairType;
  -#else
  -     typedef std::pair<ElementFlagsMapType::iterator, bool>  PairType;
  -#endif
  -
  -     PairType        theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("Q")),
  -                     ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CITE")), 
ElemDesc::ATTRURL);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BLOCKQUOTE")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CITE")), 
ElemDesc::ATTRURL);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("INS")),
  -                     ElemDesc(0)));
  -     
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CITE")), 
ElemDesc::ATTRURL);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DEL")),
  -                     ElemDesc(0)));
  -     
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CITE")), 
ElemDesc::ATTRURL);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DL")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DT")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("DD")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("OL")),
  -                     ElemDesc(0|ElemDesc::LIST|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("UL")),
  -                     ElemDesc(0|ElemDesc::LIST|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("LI")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("FORM")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("ACTION")), 
ElemDesc::ATTRURL);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("LABEL")),
  -                     ElemDesc(0|ElemDesc::FORMCTRL)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("INPUT")),
  -                     
ElemDesc(0|ElemDesc::FORMCTRL|ElemDesc::INLINELABEL|ElemDesc::EMPTY)));
  -     
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("SRC")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("USEMAP")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("CHECKED")), 
ElemDesc::ATTREMPTY);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DISABLED")),
 ElemDesc::ATTREMPTY);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("ISMAP")), 
ElemDesc::ATTREMPTY);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("READONLY")),
 ElemDesc::ATTREMPTY);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SELECT")),
  -                     ElemDesc(0|ElemDesc::FORMCTRL|ElemDesc::INLINELABEL)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DISABLED")),
 ElemDesc::ATTREMPTY);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("MULTIPLE")),
 ElemDesc::ATTREMPTY);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("OPTGROUP")),
  -                     ElemDesc(0)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DISABLED")),
 ElemDesc::ATTREMPTY);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("OPTION")),
  -                     ElemDesc(0)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DISABLED")),
 ElemDesc::ATTREMPTY);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("SELECTED")),
 ElemDesc::ATTREMPTY);
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TEXTAREA")),
  -                     ElemDesc(0|ElemDesc::FORMCTRL|ElemDesc::INLINELABEL)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DISABLED")),
 ElemDesc::ATTREMPTY);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("READONLY")),
 ElemDesc::ATTREMPTY);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("FIELDSET")),
  -                     ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("LEGEND")),
  -                     ElemDesc(0)));
  -}
  -
  -
  -
  -static void
  -initializeElementFlagsMap4(ElementFlagsMapType&              theElementFlags)
  -{
  -#if defined(XALAN_NO_NAMESPACES)
  -     typedef pair<ElementFlagsMapType::iterator, bool>       PairType;
  -#else
  -     typedef std::pair<ElementFlagsMapType::iterator, bool>  PairType;
  -#endif
  -
  -     PairType        theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BUTTON")),
  -                     ElemDesc(0|ElemDesc::FORMCTRL|ElemDesc::INLINELABEL)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DISABLED")),
 ElemDesc::ATTREMPTY);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TABLE")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("CAPTION")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("THEAD")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TFOOT")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TBODY")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("COLGROUP")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("COL")),
  -                     ElemDesc(0|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TR")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TH")),
  -                     ElemDesc(0)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TD")),
  -                     ElemDesc(0)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("HEAD")),
  -                     ElemDesc(0|ElemDesc::BLOCK|ElemDesc::HEADELEM)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("PROFILE")), 
ElemDesc::ATTRURL);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("TITLE")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("BASE")),
  -                     ElemDesc(0|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("HREF")), 
ElemDesc::ATTRURL);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("META")),
  -                     
ElemDesc(0|ElemDesc::HEADMISC|ElemDesc::EMPTY|ElemDesc::BLOCK)));
  -     
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("STYLE")),
  -                     
ElemDesc(0|ElemDesc::HEADMISC|ElemDesc::RAW|ElemDesc::BLOCK)));
  -
  -     theResult =
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("SCRIPT")),
  -                     
ElemDesc(0|ElemDesc::SPECIAL|ElemDesc::ASPECIAL|ElemDesc::HEADMISC|ElemDesc::RAW)));
  -
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("SRC")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("FOR")), 
ElemDesc::ATTRURL);
  -     
(*theResult.first).second.setAttr(c_wstr(XALAN_STATIC_UCODE_STRING("DEFER")), 
ElemDesc::ATTREMPTY);
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("NOSCRIPT")),
  -                     
ElemDesc(0|ElemDesc::BLOCK|ElemDesc::BLOCKFORM|ElemDesc::BLOCKFORMFIELDSET)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("HTML")),
  -                     ElemDesc(0|ElemDesc::BLOCK)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("FONT")),
  -                     ElemDesc(0 | ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("S")),
  -                     ElemDesc(0 | ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("STRIKE")),
  -                     ElemDesc(0 | ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("U")),
  -                     ElemDesc(0 | ElemDesc::FONTSTYLE)));
  -
  -     theElementFlags.insert(
  -             ElementFlagsMapType::value_type(
  -                     c_wstr(XALAN_STATIC_UCODE_STRING("NOBR")),
  -                     ElemDesc(0 | ElemDesc::FONTSTYLE)));
  -}
  -
  -
  -
  -void
  -FormatterToHTML::initializeElementFlagsMap(ElementFlagsMapType&              
theElementFlags)
  -{
  -     initializeElementFlagsMap1(theElementFlags);
  -     initializeElementFlagsMap2(theElementFlags);
  -     initializeElementFlagsMap3(theElementFlags);
  -     initializeElementFlagsMap4(theElementFlags);
  -}
  -
  -
  -
  -static XalanAutoPtr<FormatterToHTML::ElementFlagsMapType>    s_elementFlags;
  -
  -
  -const FormatterToHTML::ElementFlagsMapType*                  
FormatterToHTML::s_elementFlags = 0;
  -
  -
  -static XalanAutoPtr<FormatterToHTML::ElemDesc>       s_dummyDesc;
  -
  -const FormatterToHTML::ElemDesc*     FormatterToHTML::s_dummyDesc = 0;
  -
  -
  -
   static XalanDOMString        s_doctypeHeaderStartString;
   
   static XalanDOMString        s_doctypeHeaderPublicString;
  @@ -2105,21 +1481,9 @@
   const unsigned long          FormatterToHTML::s_entitiesSize =
                                sizeof(s_entities) / sizeof (s_entities[0]);
   
  -
   void
   FormatterToHTML::initialize()
   {
  -     // Make sure there's nothing there first...
  -     ::s_elementFlags.reset();
  -     ::s_dummyDesc.reset();
  -
  -     // New everything in a local so that an exception will clean up 
everything...
  -     XalanAutoPtr<ElementFlagsMapType>       theElementFlags(new 
ElementFlagsMapType);
  -     XalanAutoPtr<ElemDesc>                          theDummyDesc(new 
ElemDesc(ElemDesc::BLOCK));
  -
  -     // Do initialization...
  -     initializeElementFlagsMap(*theElementFlags.get());
  -
        ::s_doctypeHeaderStartString = XALAN_STATIC_UCODE_STRING("<!DOCTYPE 
HTML");
   
        ::s_doctypeHeaderPublicString = XALAN_STATIC_UCODE_STRING(" PUBLIC \"");
  @@ -2132,14 +1496,6 @@
   
        ::s_metaString = XALAN_STATIC_UCODE_STRING("<META 
http-equiv=\"Content-Type\" content=\"text/html; charset=");
   
  -     // Everythings cool, so let the globals own the objects...
  -     ::s_elementFlags = theElementFlags;
  -     ::s_dummyDesc = theDummyDesc;
  -
  -     // Update the class members...
  -     s_elementFlags = ::s_elementFlags.get();
  -     s_dummyDesc = ::s_dummyDesc.get();
  -
   #if defined(XALAN_LSTRSUPPORT) && 
!defined(XALAN_XALANDOMCHAR_USHORT_MISMATCH)
   #else
        initializeEntities(theLocalEntities, FormatterToHTML::s_entities);
  @@ -2151,12 +1507,6 @@
   void
   FormatterToHTML::terminate()
   {
  -     s_elementFlags = 0;
  -     s_dummyDesc = 0;
  -
  -     ::s_elementFlags.reset();
  -     ::s_dummyDesc.reset();
  -
        releaseMemory(::s_doctypeHeaderStartString);
   
        releaseMemory(::s_doctypeHeaderPublicString);
  
  
  
  1.33      +17 -128   xml-xalan/c/src/XMLSupport/FormatterToHTML.hpp
  
  Index: FormatterToHTML.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToHTML.hpp,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- FormatterToHTML.hpp       21 Aug 2002 23:42:08 -0000      1.32
  +++ FormatterToHTML.hpp       23 Aug 2002 21:20:42 -0000      1.33
  @@ -64,16 +64,20 @@
   
   
   
  +#include <vector>
  +
  +
  +
   // Base class header file.
   #include <XMLSupport/FormatterToXML.hpp>
   
   
   
  -#include <Include/XalanArrayKeyMap.hpp>
  +#include <PlatformSupport/DOMStringHelper.hpp>
   
   
   
  -#include <PlatformSupport/DOMStringHelper.hpp>
  +#include <XMLSupport/XalanHTMLElementsProperties.hpp>
   
   
   
  @@ -82,9 +86,14 @@
    */
   class XALAN_XMLSUPPORT_EXPORT FormatterToHTML : public FormatterToXML 
   {  
  -
   public:
   
  +#if defined(XALAN_NO_NAMESPACES)
  +     typedef vector<XalanHTMLElementsProperties::ElementProperties>  
ElementPropertiesStackType;
  +#else
  +     typedef std::vector<XalanHTMLElementsProperties::ElementProperties>     
ElementPropertiesStackType;
  +#endif
  +
        /**
         * Perform static initialization.  See class XMLSupportInit.
         */
  @@ -186,104 +195,6 @@
                m_escapeURLs = flag;
        }
   
  -     class ElemDesc
  -     {
  -     public:
  -
  -             enum eFlags
  -             {
  -                     EMPTY = (1 << 1),
  -                     FLOW = (1 << 2),
  -                     BLOCK = (1 << 3),
  -                     BLOCKFORM = (1 << 4),
  -                     BLOCKFORMFIELDSET = (1 << 5),
  -                     CDATA = (1 << 6),
  -                     PCDATA = (1 << 7),
  -                     RAW = (1 << 8),
  -                     INLINE = (1 << 9),
  -                     INLINEA = (1 << 10),
  -                     INLINELABEL = (1 << 11),
  -                     FONTSTYLE = (1 << 12),
  -                     PHRASE = (1 << 13),
  -                     FORMCTRL = (1 << 14),
  -                     SPECIAL = (1 << 15),
  -                     ASPECIAL = (1 << 16),
  -                     HEADMISC = (1 << 17),
  -                     HEAD = (1 << 18),
  -                     LIST = (1 << 19),
  -                     PREFORMATTED = (1 << 20),
  -                     WHITESPACESENSITIVE = (1 << 21),
  -                     HEADELEM = (1 << 22),
  -
  -                     ATTRURL = (1 << 1),
  -                     ATTREMPTY = (1 << 2)
  -             };
  -
  -             ElemDesc(unsigned int   flags = 0) :
  -                     m_flags(flags)
  -             {
  -             }
  -
  -             ~ElemDesc()
  -             {
  -             }
  -
  -             bool
  -             operator==(const ElemDesc&      theRHS) const
  -             {
  -                     return m_flags == theRHS.m_flags && m_attrs == 
theRHS.m_attrs;
  -             }
  -
  -             bool
  -             is(unsigned int         flags) const
  -             {
  -                     return m_flags & flags ? true : false;
  -             }
  -
  -             void
  -             setAttr(
  -                             const XalanDOMChar*             name,
  -                             unsigned int                    flags)
  -             {
  -                     m_attrs.insert(AttributeMapType::value_type(name, 
flags));
  -             }
  -
  -             bool
  -             isAttrFlagSet(
  -                             const XalanDOMChar*             name,
  -                             unsigned int                    flags) const
  -             {
  -                     const AttributeMapType::const_iterator  i =
  -                             m_attrs.find(name);
  -
  -                     if (i == m_attrs.end())
  -                     {
  -                             return false;
  -                     }
  -                     else
  -                     {
  -                             return (*i).second & flags ? true : false;
  -                     }
  -             }
  -
  -     private:
  -
  -             typedef XalanArrayKeyMap<
  -                                     XalanDOMChar,
  -                                     unsigned int,
  -                                     less_no_case_ascii_wide_string>         
AttributeMapType;
  -
  -             const unsigned int      m_flags;
  -
  -             AttributeMapType        m_attrs;
  -     };
  -
  -
  -     typedef XalanArrayKeyMap<
  -                             XalanDOMChar,
  -                             ElemDesc,
  -                             less_no_case_ascii_wide_string>         
ElementFlagsMapType;
  -
        struct EntityPair
        {
                XalanDOMChar                            m_char;
  @@ -321,13 +232,6 @@
   
   private:
   
  -     static const ElementFlagsMapType*                                       
                s_elementFlags;
  -
  -     /**
  -      * Dummy description for elements not found.
  -      */
  -     static const ElemDesc*                  s_dummyDesc;
  -
        /**
         * The string "<!DOCTYPE  HTML".
         */
  @@ -377,32 +281,15 @@
        copyEntityIntoBuffer(const XalanDOMString&      s);
   
        /**
  -      * Get an ElemDesc instance for the specified name.
  -      *
  -      * @param name the name to search.
  -      * @return a const reference to the ElemDesc instance.
  -      */
  -     static const ElemDesc&
  -     getElemDesc(const XalanDOMChar*         name);
  -
  -     /**
  -      * Initialize the map of element flags.
  -      *
  -      * @return map of element flags.
  -      */
  -     static void
  -     initializeElementFlagsMap(ElementFlagsMapType&  theMap);
  -
  -     /**
         * Process an attribute.
         * @param   name         The name of the attribute.
         * @param   value   The value of the attribute.
         */
        virtual void
        processAttribute(
  -                     const XalanDOMChar*             name,
  -                     const XalanDOMChar*             value,
  -                     const ElemDesc&                 elemDesc);
  +                     const XalanDOMChar*                                     
                                        name,
  +                     const XalanDOMChar*                                     
                                        value,
  +                     const XalanHTMLElementsProperties::ElementProperties&   
elemProperties);
   
        /**
         * Write the specified string after substituting non ASCII characters,
  @@ -468,6 +355,8 @@
         * This is set to true if we should omit the META tag in HTML output 
(the default is false)
         */
        bool                                    m_omitMetaTag;
  +
  +     ElementPropertiesStackType              m_elementPropertiesStack;
   
        static const XalanDOMString             s_emptyString;
   
  
  
  

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

Reply via email to