00001 /* 00002 * Copyright 2003,2004 The Apache Software Foundation. 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 /* 00018 * $Id: XSNamespaceItem.hpp 191054 2005-06-17 02:56:35Z jberry $ 00019 */ 00020 00021 #if !defined(XSNAMESPACEITEM_HPP) 00022 #define XSNAMESPACEITEM_HPP 00023 00024 #include <xercesc/util/PlatformUtils.hpp> 00025 #include <xercesc/framework/psvi/XSObject.hpp> 00026 #include <xercesc/framework/psvi/XSNamedMap.hpp> 00027 00028 XERCES_CPP_NAMESPACE_BEGIN 00029 00041 // forward declarations 00042 class XSAnnotation; 00043 class XSAttributeDeclaration; 00044 class XSAttributeGroupDefinition; 00045 class XSElementDeclaration; 00046 class XSModelGroupDefinition; 00047 class XSNotationDeclaration; 00048 class XSTypeDefinition; 00049 class SchemaGrammar; 00050 class XSModel; 00051 00052 class XSNamespaceItem : public XMemory 00053 { 00054 public: 00055 00056 // Constructors and Destructor 00057 // ----------------------------------------------------------------------- 00060 00068 XSNamespaceItem 00069 ( 00070 XSModel* const xsModel 00071 , SchemaGrammar* const grammar 00072 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 00073 ); 00074 00075 XSNamespaceItem 00076 ( 00077 XSModel* const xsModel 00078 , const XMLCh* const schemaNamespace 00079 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 00080 ); 00081 00083 00086 ~XSNamespaceItem(); 00088 00089 //--------------------- 00093 00098 const XMLCh *getSchemaNamespace(); 00099 00110 XSNamedMap<XSObject> *getComponents(XSConstants::COMPONENT_TYPE objectType); 00111 00115 XSAnnotationList *getAnnotations(); 00116 00123 XSElementDeclaration *getElementDeclaration(const XMLCh *name); 00124 00131 XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name); 00132 00140 XSTypeDefinition *getTypeDefinition(const XMLCh *name); 00141 00148 XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name); 00149 00156 XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name); 00157 00164 XSNotationDeclaration *getNotationDeclaration(const XMLCh *name); 00165 00170 StringList *getDocumentLocations(); 00171 00173 00174 //---------------------------------- 00178 00179 00181 private: 00182 00183 // ----------------------------------------------------------------------- 00184 // Unimplemented constructors and operators 00185 // ----------------------------------------------------------------------- 00186 XSNamespaceItem(const XSNamespaceItem&); 00187 XSNamespaceItem & operator=(const XSNamespaceItem &); 00188 00189 protected: 00190 friend class XSModel; 00191 friend class XSObjectFactory; 00192 // ----------------------------------------------------------------------- 00193 // data members 00194 // ----------------------------------------------------------------------- 00195 // fMemoryManager: 00196 // used for any memory allocations 00197 MemoryManager* const fMemoryManager; 00198 SchemaGrammar* fGrammar; 00199 XSModel* fXSModel; 00200 00201 /* Need a XSNamedMap for each component top-level? 00202 that is top level. 00203 ATTRIBUTE_DECLARATION = 1, 00204 ELEMENT_DECLARATION = 2, 00205 TYPE_DEFINITION = 3, 00206 ATTRIBUTE_USE = 4, no 00207 ATTRIBUTE_GROUP_DEFINITION= 5, 00208 MODEL_GROUP_DEFINITION = 6, 00209 MODEL_GROUP = 7, no 00210 PARTICLE = 8, no 00211 WILDCARD = 9, no 00212 IDENTITY_CONSTRAINT = 10, no 00213 NOTATION_DECLARATION = 11, 00214 ANNOTATION = 12, no 00215 FACET = 13, no 00216 MULTIVALUE_FACET = 14 no 00217 */ 00218 XSNamedMap<XSObject>* fComponentMap[XSConstants::MULTIVALUE_FACET]; 00219 XSAnnotationList* fXSAnnotationList; 00220 RefHashTableOf<XSObject>* fHashMap[XSConstants::MULTIVALUE_FACET]; 00221 const XMLCh* fSchemaNamespace; 00222 }; 00223 00224 inline XSAnnotationList* XSNamespaceItem::getAnnotations() 00225 { 00226 return fXSAnnotationList; 00227 } 00228 00229 inline const XMLCh *XSNamespaceItem::getSchemaNamespace() 00230 { 00231 return fSchemaNamespace; 00232 } 00233 00234 00235 00236 XERCES_CPP_NAMESPACE_END 00237 00238 #endif