| API Docs for SAX and DOM |

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

# XSComplexTypeDefinition.hpp

Go to the documentation of this file.

    00001 /*
    00002  * The Apache Software License, Version 1.1
    00003  *
    00004  * Copyright (c) 2003 The Apache Software Foundation.  All rights
    00005  * reserved.
    00006  *
    00007  * Redistribution and use in source and binary forms, with or without
    00008  * modification, are permitted provided that the following conditions
    00009  * are met:
    00010  *
    00011  * 1. Redistributions of source code must retain the above copyright
    00012  *    notice, this list of conditions and the following disclaimer.
    00013  *
    00014  * 2. Redistributions in binary form must reproduce the above copyright
    00015  *    notice, this list of conditions and the following disclaimer in
    00016  *    the documentation and/or other materials provided with the
    00017  *    distribution.
    00018  *
    00019  * 3. The end-user documentation included with the redistribution,
    00020  *    if any, must include the following acknowledgment:
    00021  *       "This product includes software developed by the
    00022  *        Apache Software Foundation (http://www.apache.org/)."
    00023  *    Alternately, this acknowledgment may appear in the software itself,
    00024  *    if and wherever such third-party acknowledgments normally appear.
    00025  *
    00026  * 4. The names "Xerces" and "Apache Software Foundation" must
    00027  *    not be used to endorse or promote products derived from this
    00028  *    software without prior written permission. For written
    00029  *    permission, please contact apache\@apache.org.
    00030  *
    00031  * 5. Products derived from this software may not be called "Apache",
    00032  *    nor may "Apache" appear in their name, without prior written
    00033  *    permission of the Apache Software Foundation.
    00034  *
    00035  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    00036  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    00037  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    00038  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
    00039  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    00040  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    00041  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    00042  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    00043  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    00044  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    00045  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    00046  * SUCH DAMAGE.
    00047  * ====================================================================
    00048  *
    00049  * This software consists of voluntary contributions made by many
    00050  * individuals on behalf of the Apache Software Foundation, and was
    00051  * originally based on software copyright (c) 1999, International
    00052  * Business Machines, Inc., http://www.ibm.com .  For more information
    00053  * on the Apache Software Foundation, please see
    00054  * <http://www.apache.org/>.
    00055  */
    00056
    00057 /*
    00058  * $Log: XSComplexTypeDefinition.hpp,v $
    00059  * Revision 1.8  2003/12/24 17:42:02  knoaman
    00060  * Misc. PSVI updates
    00061  *
    00062  * Revision 1.7  2003/12/01 23:23:26  neilg
    00063  * fix for bug 25118; thanks to Jeroen Witmond
    00064  *
    00065  * Revision 1.6  2003/11/25 18:08:31  knoaman
    00066  * Misc. PSVI updates. Thanks to David Cargill.
    00067  *
    00068  * Revision 1.5  2003/11/21 17:19:30  knoaman
    00069  * PSVI update.
    00070  *
    00071  * Revision 1.4  2003/11/14 22:47:53  neilg
    00072  * fix bogus log message from previous commit...
    00073  *
    00074  * Revision 1.3  2003/11/14 22:33:30  neilg
    00075  * Second phase of schema component model implementation.
    00076  * Implement XSModel, XSNamespaceItem, and the plumbing necessary
    00077  * to connect them to the other components.
    00078  * Thanks to David Cargill.
    00079  *
    00080  * Revision 1.2  2003/11/06 15:30:04  neilg
    00081  * 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.
    00082  *
    00083  * Revision 1.1  2003/09/16 14:33:36  neilg
    00084  * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
    00085  *
    00086  */
    00087
    00088 #if !defined(XSCOMPLEXTYPEDEFINITION_HPP)
    00089 #define XSCOMPLEXTYPEDEFINITION_HPP
    00090
    00091 #include <xercesc/framework/psvi/XSTypeDefinition.hpp>
    00092
    00093 XERCES_CPP_NAMESPACE_BEGIN
    00094
    00103 // forward declarations
    00104 class XSAnnotation;
    00105 class XSAttributeUse;
    00106 class XSSimpleTypeDefinition;
    00107 class XSParticle;
    00108 class XSWildcard;
    00109 class ComplexTypeInfo;
    00110
    00111 class  XSComplexTypeDefinition : public XSTypeDefinition
    00112 {
    00113 public:
    00114
    00115     // Content Model Types
    00116     enum CONTENT_TYPE {
    00122          CONTENTTYPE_EMPTY         = 0,
    00127          CONTENTTYPE_SIMPLE        = 1,
    00133          CONTENTTYPE_ELEMENT       = 2,
    00137          CONTENTTYPE_MIXED         = 3
    00138     };
    00139
    00140     //  Constructors and Destructor
    00141     // -----------------------------------------------------------------------
    00144
    00158     XSComplexTypeDefinition
    00159     (
    00160         ComplexTypeInfo* const          complexTypeInfo
    00161         , XSWildcard* const             xsWildcard
    00162         , XSSimpleTypeDefinition* const xsSimpleType
    00163         , XSAttributeUseList* const     xsAttList
    00164         , XSTypeDefinition* const       xsBaseType
    00165         , XSParticle* const             xsParticle
    00166         , XSAnnotation* const           headAnnot
    00167         , XSModel* const                xsModel
    00168         , MemoryManager* const          manager = XMLPlatformUtils::fgMemoryManager
    00169     );
    00170
    00172
    00175     ~XSComplexTypeDefinition();
    00177
    00178     //---------------------
    00182
    00188     XSConstants::DERIVATION_TYPE getDerivationMethod() const;
    00189
    00195     bool getAbstract() const;
    00196
    00200     XSAttributeUseList *getAttributeUses();
    00201
    00205     XSWildcard *getAttributeWildcard() const;
    00206
    00213     CONTENT_TYPE getContentType() const;
    00214
    00219     XSSimpleTypeDefinition *getSimpleType() const;
    00220
    00225     XSParticle *getParticle() const;
    00226
    00234     bool isProhibitedSubstitution(XSConstants::DERIVATION_TYPE toTest);
    00235
    00241     short getProhibitedSubstitutions() const;
    00242
    00246     XSAnnotationList *getAnnotations();
    00247
    00252     const XMLCh* getName();
    00253
    00258     const XMLCh* getNamespace();
    00259
    00265     XSNamespaceItem *getNamespaceItem();
    00266
    00271     bool getAnonymous() const;
    00272
    00277     XSTypeDefinition *getBaseType();
    00278
    00286     bool derivedFromType(const XSTypeDefinition* const ancestorType);
    00287
    00289
    00290     //----------------------------------
    00294
    00295
    00297
    00298 private:
    00299
    00303     void setBaseType(XSTypeDefinition* const xsBaseType);
    00304     friend class XSObjectFactory;
    00305
    00306     // -----------------------------------------------------------------------
    00307     //  Unimplemented constructors and operators
    00308     // -----------------------------------------------------------------------
    00309     XSComplexTypeDefinition(const XSComplexTypeDefinition&);
    00310     XSComplexTypeDefinition & operator=(const XSComplexTypeDefinition &);
    00311
    00312 protected:
    00313
    00314     // -----------------------------------------------------------------------
    00315     //  data members
    00316     // -----------------------------------------------------------------------
    00317     ComplexTypeInfo*        fComplexTypeInfo;
    00318     XSWildcard*             fXSWildcard;
    00319     XSAttributeUseList*     fXSAttributeUseList;
    00320     XSSimpleTypeDefinition* fXSSimpleTypeDefinition;
    00321     XSAnnotationList*       fXSAnnotationList;
    00322     XSParticle*             fParticle;
    00323     short                   fProhibitedSubstitution;
    00324 };
    00325
    00326
    00327 inline XSAttributeUseList* XSComplexTypeDefinition::getAttributeUses()
    00328 {
    00329     return fXSAttributeUseList;
    00330 }
    00331
    00332 inline XSWildcard* XSComplexTypeDefinition::getAttributeWildcard() const
    00333 {
    00334     return fXSWildcard;
    00335 }
    00336
    00337 inline XSSimpleTypeDefinition* XSComplexTypeDefinition::getSimpleType() const
    00338 {
    00339     return fXSSimpleTypeDefinition;
    00340 }
    00341
    00342 inline short XSComplexTypeDefinition::getProhibitedSubstitutions() const
    00343 {
    00344     return fProhibitedSubstitution;
    00345 }
    00346
    00347 inline XSParticle *XSComplexTypeDefinition::getParticle() const
    00348 {
    00349     return fParticle;
    00350 }
    00351
    00352 inline void
    00353 XSComplexTypeDefinition::setBaseType(XSTypeDefinition* const xsBaseType)
    00354 {
    00355     fBaseType = xsBaseType;
    00356 }
    00357
    00358 XERCES_CPP_NAMESPACE_END
    00359
    00360 #endif

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