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: XSModelGroup.hpp,v $ 00019 * Revision 1.6 2004/09/08 13:56:08 peiyongz 00020 * Apache License Version 2.0 00021 * 00022 * Revision 1.5 2003/12/01 23:23:26 neilg 00023 * fix for bug 25118; thanks to Jeroen Witmond 00024 * 00025 * Revision 1.4 2003/11/21 17:29:53 knoaman 00026 * PSVI update 00027 * 00028 * Revision 1.3 2003/11/14 22:47:53 neilg 00029 * fix bogus log message from previous commit... 00030 * 00031 * Revision 1.2 2003/11/14 22:33:30 neilg 00032 * Second phase of schema component model implementation. 00033 * Implement XSModel, XSNamespaceItem, and the plumbing necessary 00034 * to connect them to the other components. 00035 * Thanks to David Cargill. 00036 * 00037 * Revision 1.1 2003/09/16 14:33:36 neilg 00038 * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them 00039 * 00040 */ 00041 00042 #if !defined(XSMODELGROUP_HPP) 00043 #define XSMODELGROUP_HPP 00044 00045 #include <xercesc/framework/psvi/XSObject.hpp> 00046 00047 XERCES_CPP_NAMESPACE_BEGIN 00048 00056 // forward declarations 00057 class XSAnnotation; 00058 class XSParticle; 00059 00060 class XSModelGroup : public XSObject 00061 { 00062 public: 00063 00064 // Content model compositors 00065 enum COMPOSITOR_TYPE { 00069 COMPOSITOR_SEQUENCE = 1, 00073 COMPOSITOR_CHOICE = 2, 00079 COMPOSITOR_ALL = 3 00080 }; 00081 00082 // Constructors and Destructor 00083 // ----------------------------------------------------------------------- 00086 00096 XSModelGroup 00097 ( 00098 COMPOSITOR_TYPE compositorType 00099 , XSParticleList* const particleList 00100 , XSAnnotation* const annot 00101 , XSModel* const xsModel 00102 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 00103 ); 00104 00106 00109 ~XSModelGroup(); 00111 00112 //--------------------- 00115 00121 COMPOSITOR_TYPE getCompositor() const; 00122 00126 XSParticleList *getParticles() const; 00127 00131 XSAnnotation *getAnnotation() const; 00132 00134 00135 //---------------------------------- 00139 00141 private: 00142 00143 // ----------------------------------------------------------------------- 00144 // Unimplemented constructors and operators 00145 // ----------------------------------------------------------------------- 00146 XSModelGroup(const XSModelGroup&); 00147 XSModelGroup & operator=(const XSModelGroup &); 00148 00149 protected: 00150 00151 // ----------------------------------------------------------------------- 00152 // data members 00153 // ----------------------------------------------------------------------- 00154 COMPOSITOR_TYPE fCompositorType; 00155 XSParticleList* fParticleList; 00156 XSAnnotation* fAnnotation; 00157 }; 00158 00159 inline XSModelGroup::COMPOSITOR_TYPE XSModelGroup::getCompositor() const 00160 { 00161 return fCompositorType; 00162 } 00163 00164 inline XSParticleList* XSModelGroup::getParticles() const 00165 { 00166 return fParticleList; 00167 } 00168 00169 inline XSAnnotation* XSModelGroup::getAnnotation() const 00170 { 00171 return fAnnotation; 00172 } 00173 00174 XERCES_CPP_NAMESPACE_END 00175 00176 #endif