00001 /* 00002 * Licensed to the Apache Software Foundation (ASF) under one or more 00003 * contributor license agreements. See the NOTICE file distributed with 00004 * this work for additional information regarding copyright ownership. 00005 * The ASF licenses this file to You under the Apache License, Version 2.0 00006 * (the "License"); you may not use this file except in compliance with 00007 * the License. You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 */ 00017 00018 /* 00019 * $Id$ 00020 */ 00021 00022 #if !defined(XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP) 00023 #define XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP 00024 00025 #include <xercesc/util/PlatformUtils.hpp> 00026 #include <xercesc/framework/psvi/XSObject.hpp> 00027 #include <xercesc/framework/psvi/XSNamedMap.hpp> 00028 00029 XERCES_CPP_NAMESPACE_BEGIN 00030 00042 // forward declarations 00043 class XSAnnotation; 00044 class XSAttributeDeclaration; 00045 class XSAttributeGroupDefinition; 00046 class XSElementDeclaration; 00047 class XSModelGroupDefinition; 00048 class XSNotationDeclaration; 00049 class XSTypeDefinition; 00050 class SchemaGrammar; 00051 class XSModel; 00052 00053 class XMLPARSER_EXPORT XSNamespaceItem : public XMemory 00054 { 00055 public: 00056 00057 // Constructors and Destructor 00058 // ----------------------------------------------------------------------- 00061 00069 XSNamespaceItem 00070 ( 00071 XSModel* const xsModel 00072 , SchemaGrammar* const grammar 00073 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 00074 ); 00075 00076 XSNamespaceItem 00077 ( 00078 XSModel* const xsModel 00079 , const XMLCh* const schemaNamespace 00080 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 00081 ); 00082 00084 00087 ~XSNamespaceItem(); 00089 00090 //--------------------- 00094 00099 const XMLCh *getSchemaNamespace() const; 00100 00111 XSNamedMap<XSObject> *getComponents(XSConstants::COMPONENT_TYPE objectType); 00112 00116 XSAnnotationList *getAnnotations(); 00117 const XSAnnotationList *getAnnotations() const; 00118 00125 XSElementDeclaration *getElementDeclaration(const XMLCh *name); 00126 00133 XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name); 00134 00142 XSTypeDefinition *getTypeDefinition(const XMLCh *name); 00143 00150 XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name); 00151 00158 XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name); 00159 00166 XSNotationDeclaration *getNotationDeclaration(const XMLCh *name); 00167 00172 const StringList *getDocumentLocations(); 00173 00175 00176 //---------------------------------- 00180 00181 00183 private: 00184 00185 // ----------------------------------------------------------------------- 00186 // Unimplemented constructors and operators 00187 // ----------------------------------------------------------------------- 00188 XSNamespaceItem(const XSNamespaceItem&); 00189 XSNamespaceItem & operator=(const XSNamespaceItem &); 00190 00191 protected: 00192 friend class XSModel; 00193 friend class XSObjectFactory; 00194 // ----------------------------------------------------------------------- 00195 // data members 00196 // ----------------------------------------------------------------------- 00197 // fMemoryManager: 00198 // used for any memory allocations 00199 MemoryManager* const fMemoryManager; 00200 SchemaGrammar* fGrammar; 00201 XSModel* fXSModel; 00202 00203 /* Need a XSNamedMap for each component top-level? 00204 that is top level. 00205 ATTRIBUTE_DECLARATION = 1, 00206 ELEMENT_DECLARATION = 2, 00207 TYPE_DEFINITION = 3, 00208 ATTRIBUTE_USE = 4, no 00209 ATTRIBUTE_GROUP_DEFINITION= 5, 00210 MODEL_GROUP_DEFINITION = 6, 00211 MODEL_GROUP = 7, no 00212 PARTICLE = 8, no 00213 WILDCARD = 9, no 00214 IDENTITY_CONSTRAINT = 10, no 00215 NOTATION_DECLARATION = 11, 00216 ANNOTATION = 12, no 00217 FACET = 13, no 00218 MULTIVALUE_FACET = 14 no 00219 */ 00220 XSNamedMap<XSObject>* fComponentMap[XSConstants::MULTIVALUE_FACET]; 00221 XSAnnotationList* fXSAnnotationList; 00222 RefHashTableOf<XSObject>* fHashMap[XSConstants::MULTIVALUE_FACET]; 00223 const XMLCh* fSchemaNamespace; 00224 }; 00225 00226 inline XSAnnotationList* XSNamespaceItem::getAnnotations() 00227 { 00228 return fXSAnnotationList; 00229 } 00230 00231 inline const XSAnnotationList* XSNamespaceItem::getAnnotations() const 00232 { 00233 return fXSAnnotationList; 00234 } 00235 00236 inline const XMLCh *XSNamespaceItem::getSchemaNamespace() const 00237 { 00238 return fSchemaNamespace; 00239 } 00240 00241 00242 00243 XERCES_CPP_NAMESPACE_END 00244 00245 #endif