http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Readme
Release Info

Installation
Download
Build

FAQs
Samples
API Docs

DOM C++ Binding
Programming
Migration Guide

Feedback
Bug-Reporting
PDF Document

CVS Repository
Mail Archive

API Docs for SAX and DOM
 

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

XSNamespaceItem.hpp

Go to the documentation of this file.
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  * $Log: XSNamespaceItem.hpp,v $
00019  * Revision 1.9  2004/09/08 13:56:09  peiyongz
00020  * Apache License Version 2.0
00021  *
00022  * Revision 1.8  2003/12/24 17:42:02  knoaman
00023  * Misc. PSVI updates
00024  *
00025  * Revision 1.7  2003/12/01 23:23:26  neilg
00026  * fix for bug 25118; thanks to Jeroen Witmond
00027  *
00028  * Revision 1.6  2003/11/21 22:34:45  neilg
00029  * More schema component model implementation, thanks to David Cargill.
00030  * In particular, this cleans up and completes the XSModel, XSNamespaceItem,
00031  * XSAttributeDeclaration and XSAttributeGroup implementations.
00032  *
00033  * Revision 1.5  2003/11/21 17:34:04  knoaman
00034  * PSVI update
00035  *
00036  * Revision 1.4  2003/11/14 22:47:53  neilg
00037  * fix bogus log message from previous commit...
00038  *
00039  * Revision 1.3  2003/11/14 22:33:30  neilg
00040  * Second phase of schema component model implementation.  
00041  * Implement XSModel, XSNamespaceItem, and the plumbing necessary
00042  * to connect them to the other components.
00043  * Thanks to David Cargill.
00044  *
00045  * Revision 1.2  2003/11/06 15:30:04  neilg
00046  * first part of PSVI/schema component model implementation, thanks to David Cargill.  This covers setting the PSVIHandler on parser objects, as well as implementing XSNotation, XSSimpleTypeDefinition, XSIDCDefinition, and most of XSWildcard, XSComplexTypeDefinition, XSElementDeclaration, XSAttributeDeclaration and XSAttributeUse.
00047  *
00048  * Revision 1.1  2003/09/16 14:33:36  neilg
00049  * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
00050  *
00051  */
00052 
00053 #if !defined(XSNAMESPACEITEM_HPP)
00054 #define XSNAMESPACEITEM_HPP
00055 
00056 #include <xercesc/util/PlatformUtils.hpp>
00057 #include <xercesc/framework/psvi/XSObject.hpp>
00058 #include <xercesc/framework/psvi/XSNamedMap.hpp>
00059 
00060 XERCES_CPP_NAMESPACE_BEGIN
00061 
00073 // forward declarations
00074 class XSAnnotation;
00075 class XSAttributeDeclaration;
00076 class XSAttributeGroupDefinition;
00077 class XSElementDeclaration;
00078 class XSModelGroupDefinition;
00079 class XSNotationDeclaration;
00080 class XSTypeDefinition;
00081 class SchemaGrammar;
00082 class XSModel;
00083 
00084 class  XSNamespaceItem : public XMemory
00085 {
00086 public:
00087 
00088     //  Constructors and Destructor
00089     // -----------------------------------------------------------------------
00092 
00100     XSNamespaceItem
00101     (
00102         XSModel* const         xsModel
00103         , SchemaGrammar* const grammar
00104         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00105     );
00106 
00107     XSNamespaceItem
00108     (
00109         XSModel* const         xsModel
00110         , const XMLCh* const   schemaNamespace
00111         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00112     );
00113 
00115 
00118     ~XSNamespaceItem();
00120 
00121     //---------------------
00125 
00130     const XMLCh *getSchemaNamespace();
00131 
00142     XSNamedMap<XSObject> *getComponents(XSConstants::COMPONENT_TYPE objectType);
00143 
00147     XSAnnotationList *getAnnotations();
00148 
00155     XSElementDeclaration *getElementDeclaration(const XMLCh *name);
00156 
00163     XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name);
00164 
00172     XSTypeDefinition *getTypeDefinition(const XMLCh *name);
00173 
00180     XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name);
00181 
00188     XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name);
00189 
00196     XSNotationDeclaration *getNotationDeclaration(const XMLCh *name);
00197 
00202     StringList *getDocumentLocations();
00203 
00205 
00206     //----------------------------------
00210 
00211 
00213 private:
00214 
00215     // -----------------------------------------------------------------------
00216     //  Unimplemented constructors and operators
00217     // -----------------------------------------------------------------------
00218     XSNamespaceItem(const XSNamespaceItem&);
00219     XSNamespaceItem & operator=(const XSNamespaceItem &);
00220 
00221 protected:
00222     friend class XSModel;
00223     friend class XSObjectFactory;
00224     // -----------------------------------------------------------------------
00225     //  data members
00226     // -----------------------------------------------------------------------
00227     // fMemoryManager:
00228     //  used for any memory allocations
00229     MemoryManager* const    fMemoryManager;
00230     SchemaGrammar*          fGrammar;
00231     XSModel*                fXSModel;
00232 
00233     /* Need a XSNamedMap for each component    top-level?
00234        that is top level.
00235           ATTRIBUTE_DECLARATION     = 1,       
00236           ELEMENT_DECLARATION       = 2,        
00237           TYPE_DEFINITION           = 3,        
00238           ATTRIBUTE_USE             = 4,       no 
00239           ATTRIBUTE_GROUP_DEFINITION= 5,        
00240           MODEL_GROUP_DEFINITION    = 6,       
00241           MODEL_GROUP               = 7,       no 
00242           PARTICLE                  = 8,       no
00243           WILDCARD                  = 9,       no
00244           IDENTITY_CONSTRAINT       = 10,      no
00245           NOTATION_DECLARATION      = 11,       
00246           ANNOTATION                = 12,      no
00247           FACET                     = 13,      no
00248           MULTIVALUE_FACET          = 14       no
00249     */
00250     XSNamedMap<XSObject>*                   fComponentMap[XSConstants::MULTIVALUE_FACET];
00251     XSAnnotationList*                       fXSAnnotationList;
00252     RefHashTableOf<XSObject>*               fHashMap[XSConstants::MULTIVALUE_FACET];
00253     const XMLCh*                            fSchemaNamespace;
00254 };
00255 
00256 inline XSAnnotationList* XSNamespaceItem::getAnnotations()
00257 {
00258     return fXSAnnotationList;
00259 }
00260 
00261 inline const XMLCh *XSNamespaceItem::getSchemaNamespace()
00262 {
00263     return fSchemaNamespace;
00264 }
00265 
00266 
00267 
00268 XERCES_CPP_NAMESPACE_END
00269 
00270 #endif


Copyright © 1994-2004 The Apache Software Foundation. All Rights Reserved.