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: XSAttributeUse.hpp,v $ 00019 * Revision 1.9 2004/09/08 13:56:08 peiyongz 00020 * Apache License Version 2.0 00021 * 00022 * Revision 1.8 2004/09/02 19:08:09 cargilld 00023 * Fix API Doc warning message 00024 * 00025 * Revision 1.7 2003/12/19 23:02:43 cargilld 00026 * Fix compiler messages on OS390. 00027 * 00028 * Revision 1.6 2003/12/17 20:50:34 knoaman 00029 * PSVI: fix for annotation of attributes in attributeGroup/derived types 00030 * 00031 * Revision 1.5 2003/11/21 17:19:30 knoaman 00032 * PSVI update. 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(XSATTRIBUTEUSE_HPP) 00052 #define XSATTRIBUTEUSE_HPP 00053 00054 #include <xercesc/framework/psvi/XSObject.hpp> 00055 00056 XERCES_CPP_NAMESPACE_BEGIN 00057 00065 // forward declarations 00066 class XSAttributeDeclaration; 00067 00068 class XSAttributeUse : public XSObject 00069 { 00070 public: 00071 00072 // Constructors and Destructor 00073 // ----------------------------------------------------------------------- 00076 00083 XSAttributeUse 00084 ( 00085 XSAttributeDeclaration* const xsAttDecl, 00086 XSModel* const xsModel, 00087 MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 00088 ); 00089 00091 00094 ~XSAttributeUse(); 00096 00097 //--------------------- 00101 00107 bool getRequired() const; 00108 00113 XSAttributeDeclaration *getAttrDeclaration() const; 00114 00118 XSConstants::VALUE_CONSTRAINT getConstraintType() const; 00119 00123 const XMLCh *getConstraintValue(); 00124 00126 00127 //---------------------------------- 00131 00133 00134 private: 00135 00136 // set data 00137 void set 00138 ( 00139 const bool isRequired 00140 , XSConstants::VALUE_CONSTRAINT constraintType 00141 , const XMLCh* const constraintValue 00142 ); 00143 00144 friend class XSObjectFactory; 00145 00146 // ----------------------------------------------------------------------- 00147 // Unimplemented constructors and operators 00148 // ----------------------------------------------------------------------- 00149 XSAttributeUse(const XSAttributeUse&); 00150 XSAttributeUse & operator=(const XSAttributeUse &); 00151 00152 protected: 00153 00154 // ----------------------------------------------------------------------- 00155 // data members 00156 // ----------------------------------------------------------------------- 00157 bool fRequired; 00158 XSConstants::VALUE_CONSTRAINT fConstraintType; 00159 const XMLCh* fConstraintValue; 00160 XSAttributeDeclaration* fXSAttributeDeclaration; 00161 }; 00162 00163 inline XSAttributeDeclaration *XSAttributeUse::getAttrDeclaration() const 00164 { 00165 return fXSAttributeDeclaration; 00166 } 00167 00168 inline bool XSAttributeUse::getRequired() const 00169 { 00170 return fRequired; 00171 } 00172 00173 inline XSConstants::VALUE_CONSTRAINT XSAttributeUse::getConstraintType() const 00174 { 00175 return fConstraintType; 00176 } 00177 00178 const inline XMLCh *XSAttributeUse::getConstraintValue() 00179 { 00180 return fConstraintValue; 00181 } 00182 00183 XERCES_CPP_NAMESPACE_END 00184 00185 #endif