secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/framework/psvi/PSVIAttributeList.hpp
changeset 0 ba25891c3a9e
child 1 c42dffbd5b4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/framework/psvi/PSVIAttributeList.hpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * $Id: PSVIAttributeList.hpp 568078 2007-08-21 11:43:25Z amassari $
+ */
+
+#if !defined(PSVIATTRIBUTEDERIVATION_LIST_HPP)
+#define PSVIATTRIBUTEDERIVATION_LIST_HPP
+
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/framework/psvi/PSVIAttribute.hpp>
+#include <xercesc/util/ValueVectorOf.hpp>
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+/**
+ * A container for the PSVI contributions to attributes that occur
+ * on a particular element.
+ * This is always owned by the parser/validator from
+ * which it is obtained.  The parser/validator will specify 
+ * under what conditions it may be relied upon to have meaningful contents.
+ */
+
+
+class XMLPARSER_EXPORT PSVIAttributeList : public XMemory
+{
+public:
+
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    /** @name Constructors */
+    //@{
+
+    /**
+      * The default constructor 
+      *
+      * @param  manager     The configurable memory manager
+      */
+    PSVIAttributeList( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+    //@};
+
+    /** @name Destructor */
+    //@{
+    ~PSVIAttributeList();
+    //@}
+
+    //---------------------
+    /** @name PSVIAttributeList methods */
+
+    //@{
+
+    /*
+     * Get the number of attributes whose PSVI contributions
+     * are contained in this list.
+     */
+    unsigned int getLength() const;
+
+    /*
+     * Get the PSVI contribution of attribute at position i
+     * in this list.  Indeces start from 0.
+     * @param index index from which the attribute PSVI contribution
+     * is to come.  
+     * @return PSVIAttribute containing the attributes PSVI contributions;
+     * null is returned if the index is out of range.
+     */
+    PSVIAttribute *getAttributePSVIAtIndex(const unsigned int index);
+
+    /*
+     * Get local part of attribute name at position index in the list.
+     * Indeces start from 0.
+     * @param index index from which the attribute name 
+     * is to come.  
+     * @return local part of the attribute's name; null is returned if the index
+     * is out of range.
+     */
+    const XMLCh *getAttributeNameAtIndex(const unsigned int index);
+
+    /*
+     * Get namespace of attribute at position index in the list.
+     * Indeces start from 0.
+     * @param index index from which the attribute namespace 
+     * is to come.  
+     * @return namespace of the attribute; 
+     * null is returned if the index is out of range.
+     */
+    const XMLCh *getAttributeNamespaceAtIndex(const unsigned int index);
+
+    /*
+     * Get the PSVI contribution of attribute with given 
+     * local name and namespace.
+     * @param attrName  local part of the attribute's name
+     * @param attrNamespace  namespace of the attribute
+     * @return null if the attribute PSVI does not exist
+     */
+    PSVIAttribute *getAttributePSVIByName(const XMLCh *attrName
+                    , const XMLCh * attrNamespace);
+
+    //@}
+
+    //----------------------------------
+    /** methods needed by implementation */
+
+    //@{
+
+    /**
+      * returns a PSVI attribute of undetermined state and given name/namespace and 
+      * makes that object part of the internal list.  Intended to be called
+      * during validation of an element.
+      * @param attrName     name of this attribute
+      * @param attrNS       URI of the attribute
+      * @return             new, uninitialized, PSVIAttribute object
+      */
+    PSVIAttribute *getPSVIAttributeToFill(
+            const XMLCh * attrName
+            , const XMLCh * attrNS);
+
+    /**
+      * reset the list
+      */
+    void reset();
+
+    //@}
+
+private:
+
+    // -----------------------------------------------------------------------
+    //  Unimplemented constructors and operators
+    // -----------------------------------------------------------------------
+    PSVIAttributeList(const PSVIAttributeList&);
+    PSVIAttributeList & operator=(const PSVIAttributeList &);
+
+
+    // -----------------------------------------------------------------------
+    //  data members
+    // -----------------------------------------------------------------------
+    // fMemoryManager
+    //  handler to provide dynamically-need memory
+    // fAttrList
+    //  list of PSVIAttributes contained by this object
+    // fAttrNameList
+    //  list of the names of the initialized PSVIAttribute objects contained
+    //  in this listing
+    // fAttrNSList
+    //  list of the namespaces of the initialized PSVIAttribute objects contained
+    //  in this listing
+    // fAttrPos
+    //  current number of initialized PSVIAttributes in fAttrList
+    MemoryManager*                  fMemoryManager;    
+    RefVectorOf<PSVIAttribute>*     fAttrList;
+    RefArrayVectorOf<XMLCh>*        fAttrNameList;
+    RefArrayVectorOf<XMLCh>*        fAttrNSList;
+    unsigned int                    fAttrPos;
+};
+inline PSVIAttributeList::~PSVIAttributeList() 
+{
+    delete fAttrList;
+    delete fAttrNameList;
+    delete fAttrNSList;
+}
+
+inline PSVIAttribute *PSVIAttributeList::getPSVIAttributeToFill(
+            const XMLCh *attrName
+            , const XMLCh * attrNS)
+{
+    PSVIAttribute *retAttr = 0;
+    if(fAttrPos == fAttrList->size())
+    {
+        retAttr = new (fMemoryManager)PSVIAttribute(fMemoryManager);
+        fAttrList->addElement(retAttr);
+        fAttrNameList->addElement((XMLCh *)attrName);
+        fAttrNSList->addElement((XMLCh *)attrNS);
+    }
+    else
+    {
+        retAttr = fAttrList->elementAt(fAttrPos);
+        fAttrNameList->setElementAt((XMLCh *)attrName, fAttrPos);
+        fAttrNSList->setElementAt((XMLCh *)attrNS, fAttrPos);
+    }
+    fAttrPos++;
+    return retAttr;
+}
+
+inline void PSVIAttributeList::reset()
+{
+    fAttrPos = 0;
+}
+
+XERCES_CPP_NAMESPACE_END
+
+#endif