## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.7

Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members

# AttributesImpl.hpp

Go to the documentation of this file.

    00001 /*
    00002  * The Apache Software License, Version 1.1
    00003  *
    00004  *
    00005  * Copyright (c) 1999-2004 The Apache Software Foundation.  All rights
    00006  * reserved.
    00007  *
    00008  * Redistribution and use in source and binary forms, with or without
    00009  * modification, are permitted provided that the following conditions
    00010  * are met:
    00011  *
    00012  * 1. Redistributions of source code must retain the above copyright
    00013  *    notice, this list of conditions and the following disclaimer.
    00014  *
    00015  * 2. Redistributions in binary form must reproduce the above copyright
    00016  *    notice, this list of conditions and the following disclaimer in
    00017  *    the documentation and/or other materials provided with the
    00018  *    distribution.
    00019  *
    00020  * 3. The end-user documentation included with the redistribution,
    00021  *    if any, must include the following acknowledgment:
    00022  *       "This product includes software developed by the
    00023  *        Apache Software Foundation (http://www.apache.org/)."
    00024  *    Alternately, this acknowledgment may appear in the software itself,
    00025  *    if and wherever such third-party acknowledgments normally appear.
    00026  *
    00027  * 4. The names "Xalan" and "Apache Software Foundation" must
    00028  *    not be used to endorse or promote products derived from this
    00029  *    software without prior written permission. For written
    00030  *    permission, please contact apache@apache.org.
    00031  *
    00032  * 5. Products derived from this software may not be called "Apache",
    00033  *    nor may "Apache" appear in their name, without prior written
    00034  *    permission of the Apache Software Foundation.
    00035  *
    00036  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    00037  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    00038  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    00039  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
    00040  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    00041  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    00042  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    00043  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    00044  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    00045  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    00046  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    00047  * SUCH DAMAGE.
    00048  * ====================================================================
    00049  *
    00050  * This software consists of voluntary contributions made by many
    00051  * individuals on behalf of the Apache Software Foundation and was
    00052  * originally based on software copyright (c) 1999, International
    00053  * Business Machines, Inc., http://www.ibm.com.  For more
    00054  * information on the Apache Software Foundation, please see
    00055  * <http://www.apache.org/>.
    00056  */
    00057 #if !defined(ATTRIBUTESIMPL_HEADER_GUARD_1357924680)
    00058 #define ATTRIBUTESIMPL_HEADER_GUARD_1357924680
    00059
    00060
    00061
    00062 // Base include file.  Must be first.
    00063 #include <xalanc/PlatformSupport/PlatformSupportDefinitions.hpp>
    00064
    00065
    00066
    00067 #include <vector>
    00068
    00069
    00070
    00071 #include <xercesc/sax2/Attributes.hpp>
    00072
    00073
    00074
    00075 XALAN_CPP_NAMESPACE_BEGIN
    00076
    00077
    00078
    00079 class AttributeVectorEntryExtended;
    00080
    00081
    00082
    00083 typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes   AttributesType;
    00084
    00085
    00086
    00087 class XALAN_PLATFORMSUPPORT_EXPORT AttributesImpl : public AttributesType
    00088 {
    00089 public:
    00090
    00091     explicit
    00092     AttributesImpl();
    00093
    00094     virtual
    00095     ~AttributesImpl();
    00096
    00097     AttributesImpl(const AttributesImpl&    theSource);
    00098
    00099     AttributesImpl(const AttributesType&    theSource);
    00100
    00101     AttributesImpl&
    00102 	operator=(const AttributesImpl&        theRHS);
    00103
    00104     AttributesImpl&
    00105 	operator=(const AttributesType&        theRHS);
    00106
    00107     // These are inherited from AttributeList
    00108     virtual unsigned int
    00109     getLength() const;
    00110
    00111     virtual const XMLCh*
    00112     getURI(const unsigned int index) const;
    00113
    00114     virtual const XMLCh*
    00115     getLocalName(const unsigned int index) const;
    00116
    00117     virtual const XMLCh*
    00118     getQName(const unsigned int index) const;
    00119
    00120     virtual const XMLCh*
    00121     getType(const unsigned int index) const;
    00122
    00123     virtual const XMLCh*
    00124     getValue(const unsigned int index) const;
    00125
    00126     virtual int
    00127     getIndex(
    00128             const XMLCh* const  uri,
    00129             const XMLCh* const  localName) const;
    00130
    00131     virtual int
    00132     getIndex(const XMLCh* const     qname) const;
    00133
    00134     virtual const XMLCh*
    00135     getType(const XMLCh* const qname) const;
    00136
    00137     virtual const XMLCh*
    00138     getType(
    00139             const XMLCh* const  uri,
    00140             const XMLCh* const  localName) const;
    00141
    00142     virtual const XMLCh*
    00143     getValue(const XMLCh* const qname) const;
    00144
    00145     virtual const XMLCh*
    00146     getValue(
    00147             const XMLCh* const  uri,
    00148             const XMLCh* const  localName) const;
    00149
    00150     // The mutators are new to this class.
    00151
    00155     virtual void
    00156     clear();
    00157
    00166     void
    00167     addAttribute(
    00168             const XMLCh*    qname,
    00169             const XMLCh*    type,
    00170             const XMLCh*    value)
    00171     {
    00172         const XMLCh     theDummy = 0;
    00173
    00174         addAttribute(&theDummy, &theDummy, qname, type, value);
    00175     }
    00176
    00187     void
    00188     addAttribute(
    00189             const XMLCh*    uri,
    00190             const XMLCh*    localName,
    00191             const XMLCh*    qname,
    00192             const XMLCh*    type,
    00193             const XMLCh*    value);
    00194
    00200     virtual bool
    00201     removeAttribute(const XMLCh*    qname);
    00202
    00209     void
    00210     swap(AttributesImpl&        theOther)
    00211     {
    00212         m_attributesVector.swap(theOther.m_attributesVector);
    00213     }
    00214
    00221     void
    00222     reserve(unsigned int    theCount)
    00223     {
    00224         m_attributesVector.reserve(theCount);
    00225     }
    00226
    00227 #if defined(XALAN_NO_STD_NAMESPACE)
    00228     // This vector will hold the entries.
    00229     typedef vector<AttributeVectorEntryExtended*>       AttributesVectorType;
    00230 #else
    00231     // This vector will hold the entries.
    00232     typedef std::vector<AttributeVectorEntryExtended*>  AttributesVectorType;
    00233 #endif
    00234
    00235 #if defined(XALAN_NEEDS_EXPLICIT_TEMPLATE_INSTANTIATION)
    00236     struct NameCompareFunctor
    00237     {
    00238         NameCompareFunctor(const XMLCh*     theQName) :
    00239             m_qname(theQName)
    00240         {
    00241         }
    00242
    00243         bool
    00244         operator()(const AttributeVectorEntryExtended*  theEntry) const;
    00245
    00246     private:
    00247
    00248         const XMLCh* const  m_qname;
    00249     };
    00250
    00251     struct URIAndLocalNameCompareFunctor
    00252     {
    00253         URIAndLocalNameCompareFunctor(
    00254                 const XMLCh*    theURI,
    00255                 const XMLCh*    theLocalName) :
    00256             m_uri(theURI),
    00257             m_localName(theLocalName)
    00258         {
    00259         }
    00260
    00261         bool
    00262         operator()(const AttributeVectorEntryExtended*  theEntry) const;
    00263
    00264     private:
    00265
    00266         const XMLCh* const  m_uri;
    00267         const XMLCh* const  m_localName;
    00268     };
    00269 #endif
    00270
    00271 private:
    00272
    00273     // This is not implemented.
    00274     bool
    00275     operator==(const AttributesImpl&) const;
    00276
    00277     // Default vector allocation size.
    00278     enum
    00279     {
    00280         eDefaultVectorSize = 5
    00281     };
    00282
    00283     AttributeVectorEntryExtended*
    00284     getNewEntry(
    00285             const XMLCh*    qname,
    00286             const XMLCh*    type,
    00287             const XMLCh*    value,
    00288             const XMLCh*    uri = 0,
    00289             const XMLCh*    localName = 0);
    00290
    00291     // Helper function to delete entries...
    00292     static void
    00293     deleteEntries(AttributesVectorType&     theVector);
    00294
    00295     AttributesVectorType    m_attributesVector;
    00296
    00297     AttributesVectorType    m_cacheVector;
    00298 };
    00299
    00300
    00301
    00302 XALAN_CPP_NAMESPACE_END
    00303
    00304
    00305
    00306 #endif  // ATTRIBUTESIMPL_HEADER_GUARD_1357924680

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.7 Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.