secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSObjectFactory.hpp
changeset 3 127731b7107d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSObjectFactory.hpp	Fri Jan 22 09:56:12 2010 +0200
@@ -0,0 +1,237 @@
+/*
+ * 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: XSObjectFactory.hpp 568078 2007-08-21 11:43:25Z amassari $
+ */
+
+#if !defined(XSOBJECTFACTORY_HPP)
+#define XSOBJECTFACTORY_HPP
+
+#include <xercesc/framework/psvi/XSConstants.hpp>
+#include <xercesc/util/RefHashTableOf.hpp>
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+class XSObject;
+class XSAttributeUse;
+class XSAttributeDeclaration;
+class XSModel;
+class XSElementDeclaration;
+class XSSimpleTypeDefinition;
+class XSComplexTypeDefinition;
+class XSModelGroupDefinition;
+class XSAttributeGroupDefinition;
+class XSWildcard;
+class XSParticle;
+class XSAnnotation;
+class XSNamespaceItem;
+class XSNotationDeclaration;
+class SchemaAttDef;
+class SchemaElementDecl;
+class DatatypeValidator;
+class ContentSpecNode;
+class ComplexTypeInfo;
+class XercesGroupInfo;
+class XercesAttGroupInfo;
+class XSIDCDefinition;
+class IdentityConstraint;
+class XMLNotationDecl;
+
+/**
+ * Factory class to create various XSObject(s)
+ * Used by XSModel
+ */
+class XMLPARSER_EXPORT XSObjectFactory : public XMemory
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    XSObjectFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+    ~XSObjectFactory();
+
+private:
+    // -----------------------------------------------------------------------
+    //  Unimplemented constructors and destructor
+    // -----------------------------------------------------------------------
+    XSObjectFactory(const XSObjectFactory&);
+    XSObjectFactory& operator=(const XSObjectFactory&);
+
+    // -----------------------------------------------------------------------
+    //  factory methods
+    // -----------------------------------------------------------------------
+    XSParticle* createModelGroupParticle
+    (
+        const ContentSpecNode* const node
+        , XSModel* const             xsModel
+    );
+
+    XSAttributeDeclaration* addOrFind
+    (
+        SchemaAttDef* const attDef
+        , XSModel* const xsModel
+        , XSComplexTypeDefinition* const enclosingTypeDef = 0
+    );
+
+    XSSimpleTypeDefinition* addOrFind
+    (
+        DatatypeValidator* const validator
+        , XSModel* const xsModel
+        , bool isAnySimpleType = false
+    );
+
+    XSElementDeclaration* addOrFind
+    (
+        SchemaElementDecl* const elemDecl
+        , XSModel* const xsModel
+        , XSComplexTypeDefinition* const enclosingTypeDef = 0
+    );
+
+    XSComplexTypeDefinition* addOrFind
+    (
+        ComplexTypeInfo* const typeInfo
+        , XSModel* const xsModel
+    );
+
+    XSIDCDefinition* addOrFind
+    (
+        IdentityConstraint* const ic
+        , XSModel* const xsModel
+    );
+
+    XSNotationDeclaration* addOrFind
+    (
+        XMLNotationDecl* const notDecl
+        , XSModel* const xsModel
+    );
+
+    XSAttributeUse* createXSAttributeUse
+    (
+        XSAttributeDeclaration* const xsAttDecl
+        , XSModel* const xsModel
+    );
+    XSWildcard* createXSWildcard
+    (
+        SchemaAttDef* const attDef
+        , XSModel* const xsModel
+    );
+
+    XSWildcard* createXSWildcard
+    (
+        const ContentSpecNode* const rootNode
+        , XSModel* const xsModel
+    );
+
+    XSModelGroupDefinition* createXSModelGroupDefinition
+    (
+        XercesGroupInfo* const groupInfo
+        , XSModel* const xsModel
+    );
+
+    XSAttributeGroupDefinition* createXSAttGroupDefinition
+    (
+        XercesAttGroupInfo* const attGroupInfo
+        , XSModel* const xsModel
+    );
+
+    // -----------------------------------------------------------------------
+    //  Helper methods
+    // -----------------------------------------------------------------------
+    // creates a particle corresponding to an element
+    XSParticle* createElementParticle
+    (
+        const ContentSpecNode* const rootNode
+        , XSModel* const             xsModel
+    );
+
+    // creates a particle corresponding to a wildcard
+    XSParticle* createWildcardParticle
+    (
+        const ContentSpecNode* const rootNode
+        , XSModel* const             xsModel
+    );
+
+    XSAnnotation* getAnnotationFromModel
+    (
+        XSModel* const xsModel
+        , const void* const key
+    );
+
+    void buildAllParticles
+    (
+        const ContentSpecNode* const rootNode
+        , XSParticleList* const particleList
+        , XSModel* const xsModel
+    );
+
+    void buildChoiceSequenceParticles
+    (
+        const ContentSpecNode* const rootNode
+        , XSParticleList* const particleList
+        , XSModel* const xsModel
+    );
+
+    void putObjectInMap
+    (
+        void* key
+        , XSObject* const object
+    );
+
+    XSObject* getObjectFromMap
+    (
+        void* key
+    );
+
+    void processFacets
+    (
+        DatatypeValidator* const dv
+        , XSModel* const xsModel
+        , XSSimpleTypeDefinition* const xsST
+    );
+
+    void processAttUse
+    (
+        SchemaAttDef* const attDef
+        , XSAttributeUse* const xsAttUse
+    );
+
+    bool isMultiValueFacetDefined(DatatypeValidator* const dv);
+
+    // make XSModel our friend
+    friend class XSModel;
+
+    // -----------------------------------------------------------------------
+    //  Private Data Members
+    //
+    //  fMemoryManager
+    //      The memory manager used to create various XSObject(s).
+    // -----------------------------------------------------------------------
+    MemoryManager*            fMemoryManager;
+    RefHashTableOf<XSObject>* fXercesToXSMap;
+    RefVectorOf<XSObject>*    fDeleteVector;
+};
+
+inline XSObject* XSObjectFactory::getObjectFromMap(void* key)
+{
+    return fXercesToXSMap->get(key);
+}
+
+
+XERCES_CPP_NAMESPACE_END
+
+#endif