File indexing completed on 2025-01-18 10:15:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP)
0023 #define XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP
0024
0025 #include <xercesc/util/RefHash2KeysTableOf.hpp>
0026 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
0027
0028 XERCES_CPP_NAMESPACE_BEGIN
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 class VALIDATORS_EXPORT SchemaAttDefList : public XMLAttDefList
0044 {
0045 public :
0046
0047
0048
0049 SchemaAttDefList
0050 (
0051 RefHash2KeysTableOf<SchemaAttDef>* const listToUse,
0052 MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
0053 );
0054
0055 ~SchemaAttDefList();
0056
0057
0058
0059
0060
0061
0062 virtual bool isEmpty() const;
0063 virtual XMLAttDef* findAttDef
0064 (
0065 const unsigned int uriID
0066 , const XMLCh* const attName
0067 );
0068 virtual const XMLAttDef* findAttDef
0069 (
0070 const unsigned int uriID
0071 , const XMLCh* const attName
0072 ) const;
0073 virtual XMLAttDef* findAttDef
0074 (
0075 const XMLCh* const attURI
0076 , const XMLCh* const attName
0077 );
0078 virtual const XMLAttDef* findAttDef
0079 (
0080 const XMLCh* const attURI
0081 , const XMLCh* const attName
0082 ) const;
0083
0084 XMLAttDef* findAttDefLocalPart
0085 (
0086 const unsigned int uriID
0087 , const XMLCh* const attLocalPart
0088 );
0089
0090 const XMLAttDef* findAttDefLocalPart
0091 (
0092 const unsigned int uriID
0093 , const XMLCh* const attLocalPart
0094 ) const;
0095
0096
0097
0098
0099 virtual XMLSize_t getAttDefCount() const ;
0100
0101
0102
0103
0104 virtual XMLAttDef &getAttDef(XMLSize_t index) ;
0105
0106
0107
0108
0109 virtual const XMLAttDef &getAttDef(XMLSize_t index) const ;
0110
0111
0112
0113
0114 DECL_XSERIALIZABLE(SchemaAttDefList)
0115
0116 SchemaAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
0117
0118 private :
0119
0120
0121
0122 SchemaAttDefList(const SchemaAttDefList&);
0123 SchemaAttDefList& operator=(const SchemaAttDefList&);
0124
0125 void addAttDef(SchemaAttDef *toAdd);
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144 RefHash2KeysTableOfEnumerator<SchemaAttDef>* fEnum;
0145 RefHash2KeysTableOf<SchemaAttDef>* fList;
0146 SchemaAttDef** fArray;
0147 XMLSize_t fSize;
0148 XMLSize_t fCount;
0149
0150 friend class ComplexTypeInfo;
0151 };
0152
0153 inline void SchemaAttDefList::addAttDef(SchemaAttDef *toAdd)
0154 {
0155 if(fCount == fSize)
0156 {
0157
0158 fSize <<= 1;
0159 SchemaAttDef** newArray = (SchemaAttDef **)((getMemoryManager())->allocate( sizeof(SchemaAttDef*) * fSize ));
0160 memcpy(newArray, fArray, fCount * sizeof(SchemaAttDef *));
0161 (getMemoryManager())->deallocate(fArray);
0162 fArray = newArray;
0163 }
0164 fArray[fCount++] = toAdd;
0165 }
0166
0167 inline XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID
0168 , const XMLCh* const attLocalPart)
0169 {
0170 return fList->get((void*)attLocalPart, uriID);
0171 }
0172
0173 inline const XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID
0174 , const XMLCh* const attLocalPart) const
0175 {
0176 return fList->get((void*)attLocalPart, uriID);
0177 }
0178
0179 XERCES_CPP_NAMESPACE_END
0180
0181 #endif