secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSObjectFactory.hpp
--- /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