00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 #if !defined(XMLELEMENTDECL_HPP)
00118 #define XMLELEMENTDECL_HPP
00119
00120 #include <xercesc/framework/XMLAttr.hpp>
00121 #include <xercesc/framework/XMLAttDefList.hpp>
00122 #include <xercesc/util/XMLString.hpp>
00123 #include <xercesc/util/PlatformUtils.hpp>
00124 #include <xercesc/internal/XSerializable.hpp>
00125
00126 XERCES_CPP_NAMESPACE_BEGIN
00127
00128 class ContentSpecNode;
00129 class XMLContentModel;
00130
00146 class XMLElementDecl : public XSerializable, public XMemory
00147 {
00148 public:
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164 enum CreateReasons
00165 {
00166 NoReason
00167 , Declared
00168 , AttList
00169 , InContentModel
00170 , AsRootElem
00171 , JustFaultIn
00172 };
00173
00178 enum LookupOpts
00179 {
00180 AddIfNotFound
00181 , FailIfNotFound
00182 };
00183
00184 enum CharDataOpts
00185 {
00186 NoCharData
00187 , SpacesOk
00188 , AllCharData
00189 };
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206 static const unsigned int fgInvalidElemId;
00207 static const unsigned int fgPCDataElemId;
00208 static const XMLCh fgPCDataElemName[];
00209
00210
00211
00212
00213
00214
00217 virtual ~XMLElementDecl();
00219
00220
00221
00222
00223
00224
00227
00258 virtual XMLAttDef* findAttr
00259 (
00260 const XMLCh* const qName
00261 , const unsigned int uriId
00262 , const XMLCh* const baseName
00263 , const XMLCh* const prefix
00264 , const LookupOpts options
00265 , bool& wasAdded
00266 ) const = 0;
00267
00279 virtual XMLAttDefList& getAttDefList() const = 0;
00280
00288 virtual CharDataOpts getCharDataOpts() const = 0;
00289
00296 virtual bool hasAttDefs() const = 0;
00297
00305 virtual bool resetDefs() = 0;
00306
00314 virtual const ContentSpecNode* getContentSpec() const = 0;
00315
00321 virtual ContentSpecNode* getContentSpec() = 0;
00322
00332 virtual void setContentSpec(ContentSpecNode* toAdopt) = 0;
00333
00345 virtual XMLContentModel* getContentModel() = 0;
00346
00358 virtual void setContentModel(XMLContentModel* const newModelToAdopt) = 0;
00359
00372 virtual const XMLCh* getFormattedContentModel () const = 0;
00373
00375
00376
00377
00378
00379
00380
00383
00391 const XMLCh* getBaseName() const;
00392 XMLCh* getBaseName();
00393
00400 unsigned int getURI() const;
00401
00409 const QName* getElementName() const;
00410 QName* getElementName();
00411
00420 const XMLCh* getFullName() const;
00421
00433 CreateReasons getCreateReason() const;
00434
00444 unsigned int getId() const;
00445
00446
00451 virtual const XMLCh* getDOMTypeInfoUri() const = 0;
00452
00457 virtual const XMLCh* getDOMTypeInfoName() const = 0;
00458
00459
00469 bool isDeclared() const;
00470
00479 bool isExternal() const;
00480
00488 MemoryManager* getMemoryManager() const;
00489
00491
00492
00493
00494
00495
00496
00499
00510 void setElementName(const XMLCh* const prefix
00511 , const XMLCh* const localPart
00512 , const int uriId );
00513
00523 void setElementName(const XMLCh* const rawName
00524 , const int uriId );
00525
00534 void setElementName(const QName* const elementName);
00535
00546 void setCreateReason(const CreateReasons newReason);
00547
00554 void setId(const unsigned int newId);
00555
00556
00560 void setExternalElemDeclaration(const bool aValue);
00561
00563
00564
00565
00566
00567
00568
00571
00573
00574
00575
00576
00577 DECL_XSERIALIZABLE(XMLElementDecl)
00578
00579 enum objectType
00580 {
00581 Schema
00582 , DTD
00583 , UnKnown
00584 };
00585
00586 virtual XMLElementDecl::objectType getObjectType() const = 0;
00587
00588 static void storeElementDecl(XSerializeEngine& serEng
00589 , XMLElementDecl* const element);
00590
00591 static XMLElementDecl* loadElementDecl(XSerializeEngine& serEng);
00592
00593 protected :
00594
00595
00596
00597 XMLElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
00598
00599 private :
00600
00601
00602
00603 XMLElementDecl(const XMLElementDecl&);
00604 XMLElementDecl& operator=(const XMLElementDecl&);
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630 MemoryManager* fMemoryManager;
00631 QName* fElementName;
00632 CreateReasons fCreateReason;
00633 unsigned int fId;
00634 bool fExternalElement;
00635 };
00636
00637
00638
00639
00640
00641 inline const XMLCh* XMLElementDecl::getBaseName() const
00642 {
00643 return fElementName->getLocalPart();
00644 }
00645
00646 inline XMLCh* XMLElementDecl::getBaseName()
00647 {
00648 return fElementName->getLocalPart();
00649 }
00650
00651 inline unsigned int XMLElementDecl::getURI() const
00652 {
00653 return fElementName->getURI();
00654 }
00655
00656 inline const QName* XMLElementDecl::getElementName() const
00657 {
00658 return fElementName;
00659 }
00660
00661 inline QName* XMLElementDecl::getElementName()
00662 {
00663 return fElementName;
00664 }
00665
00666 inline const XMLCh* XMLElementDecl::getFullName() const
00667 {
00668 return fElementName->getRawName();
00669 }
00670
00671 inline XMLElementDecl::CreateReasons XMLElementDecl::getCreateReason() const
00672 {
00673 return fCreateReason;
00674 }
00675
00676 inline unsigned int XMLElementDecl::getId() const
00677 {
00678 return fId;
00679 }
00680
00681 inline bool XMLElementDecl::isDeclared() const
00682 {
00683 return (fCreateReason == Declared);
00684 }
00685
00686
00687 inline bool XMLElementDecl::isExternal() const
00688 {
00689 return fExternalElement;
00690 }
00691
00692 inline MemoryManager* XMLElementDecl::getMemoryManager() const
00693 {
00694 return fMemoryManager;
00695 }
00696
00697
00698
00699
00700
00701 inline void
00702 XMLElementDecl::setCreateReason(const XMLElementDecl::CreateReasons newReason)
00703 {
00704 fCreateReason = newReason;
00705 }
00706
00707 inline void XMLElementDecl::setId(const unsigned int newId)
00708 {
00709 fId = newId;
00710 }
00711
00712
00713 inline void XMLElementDecl::setExternalElemDeclaration(const bool aValue)
00714 {
00715 fExternalElement = aValue;
00716 }
00717
00718 XERCES_CPP_NAMESPACE_END
00719
00720 #endif