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  

XSTypeDefinition.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: XSTypeDefinition.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/01 23:23:26  neilg
00023  * fix for bug 25118; thanks to Jeroen Witmond
00024  *
00025  * Revision 1.7  2003/11/25 18:08:31  knoaman
00026  * Misc. PSVI updates. Thanks to David Cargill.
00027  *
00028  * Revision 1.6  2003/11/21 17:34:04  knoaman
00029  * PSVI update
00030  *
00031  * Revision 1.5  2003/11/15 21:19:01  neilg
00032  * fixes for compilation under gcc
00033  *
00034  * Revision 1.4  2003/11/14 22:47:53  neilg
00035  * fix bogus log message from previous commit...
00036  *
00037  * Revision 1.3  2003/11/14 22:33:30  neilg
00038  * Second phase of schema component model implementation.  
00039  * Implement XSModel, XSNamespaceItem, and the plumbing necessary
00040  * to connect them to the other components.
00041  * Thanks to David Cargill.
00042  *
00043  * Revision 1.2  2003/11/06 15:30:04  neilg
00044  * 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.
00045  *
00046  * Revision 1.1  2003/09/16 14:33:36  neilg
00047  * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
00048  *
00049  */
00050 
00051 #if !defined(XSTYPEDEFINITION_HPP)
00052 #define XSTYPEDEFINITION_HPP
00053 
00054 #include <xercesc/framework/psvi/XSObject.hpp>
00055 
00056 XERCES_CPP_NAMESPACE_BEGIN
00057 
00058 // forward declarations
00059 class XSNamespaceItem;
00060 
00068 class  XSTypeDefinition : public XSObject
00069 {
00070 public:
00071 
00072     enum TYPE_CATEGORY {
00076         COMPLEX_TYPE              = 15,
00080         SIMPLE_TYPE               = 16
00081     };
00082 
00083     //  Constructors and Destructor
00084     // -----------------------------------------------------------------------
00087 
00096     XSTypeDefinition
00097     (
00098         TYPE_CATEGORY             typeCategory
00099         , XSTypeDefinition* const xsBaseType
00100         , XSModel* const          xsModel
00101         , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
00102     );
00103 
00105 
00108     virtual ~XSTypeDefinition();
00110 
00111     //---------------------
00114 
00119     virtual const XMLCh* getName() = 0;
00120 
00125     virtual const XMLCh* getNamespace() = 0;
00126 
00132     virtual XSNamespaceItem *getNamespaceItem() = 0;
00133 
00135 
00136     //---------------------
00140 
00144     TYPE_CATEGORY getTypeCategory() const;
00145 
00150     virtual XSTypeDefinition *getBaseType() = 0;
00151 
00160     bool isFinal(short toTest);
00161 
00172     short getFinal() const;
00173 
00178     virtual bool getAnonymous() const = 0;
00179 
00187     virtual bool derivedFromType(const XSTypeDefinition* const ancestorType) = 0;
00188 
00197     bool derivedFrom(const XMLCh* typeNamespace, 
00198                                const XMLCh* name);
00199 
00201 
00202     //----------------------------------
00206 
00208 private:
00209 
00210     // -----------------------------------------------------------------------
00211     //  Unimplemented constructors and operators
00212     // -----------------------------------------------------------------------
00213     XSTypeDefinition(const XSTypeDefinition&);
00214     XSTypeDefinition & operator=(const XSTypeDefinition &);
00215 
00216 protected:
00217 
00218     // -----------------------------------------------------------------------
00219     //  data members
00220     // -----------------------------------------------------------------------
00221     // fTypeCategory
00222     //  whether this is a simpleType or complexType
00223     // fFinal
00224     //  the final properties which is set by the derived class.
00225     TYPE_CATEGORY     fTypeCategory;
00226     short             fFinal;
00227     XSTypeDefinition* fBaseType; // owned by XSModel
00228 };
00229 
00230 inline XSTypeDefinition::TYPE_CATEGORY XSTypeDefinition::getTypeCategory() const
00231 {
00232     return fTypeCategory;
00233 }
00234 
00235 inline short XSTypeDefinition::getFinal() const
00236 {
00237     return fFinal;
00238 }
00239 
00240 
00241 XERCES_CPP_NAMESPACE_END
00242 
00243 #endif


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