| 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.7  2003/12/01 23:23:26  neilg
    00060  * fix for bug 25118; thanks to Jeroen Witmond
    00061  *
    00062  * Revision 1.6  2003/11/25 18:08:31  knoaman
    00063  * Misc. PSVI updates. Thanks to David Cargill.
    00064  *
    00065  * Revision 1.5  2003/11/21 17:19:30  knoaman
    00066  * PSVI update.
    00067  *
    00068  * Revision 1.4  2003/11/14 22:47:53  neilg
    00069  * fix bogus log message from previous commit...
    00070  *
    00071  * Revision 1.3  2003/11/14 22:33:30  neilg
    00072  * Second phase of schema component model implementation.
    00073  * Implement XSModel, XSNamespaceItem, and the plumbing necessary
    00074  * to connect them to the other components.
    00075  * Thanks to David Cargill.
    00076  *
    00077  * Revision 1.2  2003/11/06 15:30:04  neilg
    00078  * 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.
    00079  *
    00080  * Revision 1.1  2003/09/16 14:33:36  neilg
    00081  * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
    00082  *
    00083  */
    00084
    00085 #if !defined(XSCOMPLEXTYPEDEFINITION_HPP)
    00086 #define XSCOMPLEXTYPEDEFINITION_HPP
    00087
    00088 #include <xercesc/framework/psvi/XSTypeDefinition.hpp>
    00089
    00090 XERCES_CPP_NAMESPACE_BEGIN
    00091
    00100 // forward declarations
    00101 class XSAnnotation;
    00102 class XSAttributeUse;
    00103 class XSSimpleTypeDefinition;
    00104 class XSParticle;
    00105 class XSWildcard;
    00106 class ComplexTypeInfo;
    00107
    00108 class  XSComplexTypeDefinition : public XSTypeDefinition
    00109 {
    00110 public:
    00111
    00112     // Content Model Types
    00113     enum CONTENT_TYPE {
    00119          CONTENTTYPE_EMPTY         = 0,
    00124          CONTENTTYPE_SIMPLE        = 1,
    00130          CONTENTTYPE_ELEMENT       = 2,
    00134          CONTENTTYPE_MIXED         = 3
    00135     };
    00136
    00137     //  Constructors and Destructor
    00138     // -----------------------------------------------------------------------
    00141
    00155     XSComplexTypeDefinition
    00156     (
    00157         ComplexTypeInfo* const          complexTypeInfo
    00158         , XSWildcard* const             xsWildcard
    00159         , XSSimpleTypeDefinition* const xsSimpleType
    00160         , XSAttributeUseList* const     xsAttList
    00161         , XSTypeDefinition* const       xsBaseType
    00162         , XSParticle* const             xsParticle
    00163         , XSAnnotation* const           headAnnot
    00164         , XSModel* const                xsModel
    00165         , MemoryManager* const          manager = XMLPlatformUtils::fgMemoryManager
    00166     );
    00167
    00169
    00172     ~XSComplexTypeDefinition();
    00174
    00175     //---------------------
    00179
    00185     XSConstants::DERIVATION_TYPE getDerivationMethod() const;
    00186
    00192     bool getAbstract() const;
    00193
    00197     XSAttributeUseList *getAttributeUses();
    00198
    00202     XSWildcard *getAttributeWildcard() const;
    00203
    00210     CONTENT_TYPE getContentType() const;
    00211
    00216     XSSimpleTypeDefinition *getSimpleType() const;
    00217
    00222     XSParticle *getParticle() const;
    00223
    00231     bool isProhibitedSubstitution(XSConstants::DERIVATION_TYPE toTest);
    00232
    00238     short getProhibitedSubstitutions() const;
    00239
    00243     XSAnnotationList *getAnnotations();
    00244
    00249     const XMLCh* getName();
    00250
    00255     const XMLCh* getNamespace();
    00256
    00262     XSNamespaceItem *getNamespaceItem();
    00263
    00268     bool getAnonymous() const;
    00269
    00274     XSTypeDefinition *getBaseType();
    00275
    00283     bool derivedFromType(const XSTypeDefinition* const ancestorType);
    00284
    00286
    00287     //----------------------------------
    00291
    00292
    00294
    00295 private:
    00296
    00297     // -----------------------------------------------------------------------
    00298     //  Unimplemented constructors and operators
    00299     // -----------------------------------------------------------------------
    00300     XSComplexTypeDefinition(const XSComplexTypeDefinition&);
    00301     XSComplexTypeDefinition & operator=(const XSComplexTypeDefinition &);
    00302
    00303 protected:
    00304
    00305     // -----------------------------------------------------------------------
    00306     //  data members
    00307     // -----------------------------------------------------------------------
    00308     ComplexTypeInfo*        fComplexTypeInfo;
    00309     XSWildcard*             fXSWildcard;
    00310     XSAttributeUseList*     fXSAttributeUseList;
    00311     XSSimpleTypeDefinition* fXSSimpleTypeDefinition;
    00312     XSAnnotationList*       fXSAnnotationList;
    00313     XSParticle*             fParticle;
    00314     short                   fProhibitedSubstitution;
    00315 };
    00316
    00317
    00318 inline XSAttributeUseList* XSComplexTypeDefinition::getAttributeUses()
    00319 {
    00320     return fXSAttributeUseList;
    00321 }
    00322
    00323 inline XSWildcard* XSComplexTypeDefinition::getAttributeWildcard() const
    00324 {
    00325     return fXSWildcard;
    00326 }
    00327
    00328 inline XSSimpleTypeDefinition* XSComplexTypeDefinition::getSimpleType() const
    00329 {
    00330     return fXSSimpleTypeDefinition;
    00331 }
    00332
    00333 inline short XSComplexTypeDefinition::getProhibitedSubstitutions() const
    00334 {
    00335     return fProhibitedSubstitution;
    00336 }
    00337
    00338 inline XSParticle *XSComplexTypeDefinition::getParticle() const
    00339 {
    00340     return fParticle;
    00341 }
    00342
    00343
    00344 XERCES_CPP_NAMESPACE_END
    00345
    00346 #endif

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