source: icXML/icXML-devel/src/icxercesc/util/QName.hpp

Last change on this file was 3564, checked in by cameron, 6 years ago

Changes to icxercesc files

File size: 7.6 KB
Line 
1/*
2 * Unless required by applicable law or agreed to in writing, software
3 * distributed under the License is distributed on an "AS IS" BASIS,
4 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5 * See the License for the specific language governing permissions and
6 * limitations under the License.
7 */
8
9/*
10 * $Id: QName.hpp 932887 2010-04-11 13:04:59Z borisk $
11 */
12
13#if !defined(XERCESC_INCLUDE_GUARD_QNAME_HPP)
14#define XERCESC_INCLUDE_GUARD_QNAME_HPP
15
16#include <icxercesc/util/XMLString.hpp>
17#include <xercesc/util/XMLUniDefs.hpp>
18#include <xercesc/util/XMemory.hpp>
19#include <xercesc/util/StringPool.hpp>
20#include <icxercesc/util/PlatformUtils.hpp>
21#include <xercesc/internal/XSerializable.hpp>
22#include <icxmlc/XMLConfig.hpp>
23
24XERCES_CPP_NAMESPACE_BEGIN
25
26class XMLSymbolTable;
27
28class XMLUTIL_EXPORT QName : public XSerializable, public XMemory
29{
30public :
31
32    friend class XMLSymbol;
33    friend class XMLElementDecl;
34    friend class SchemaElementDecl;
35    friend class DTDElementDecl;
36    friend class XMLInitializer;
37    friend class ContentSpecNode;
38    friend class DFAContentModel;
39
40        // -----------------------------------------------------------------------
41        //  Constructors and Destructor
42        // -----------------------------------------------------------------------
43    /** Default constructor. */
44    QName(XMLStringPool * const qNameManager = NULL);
45
46    /** Constructs a specified qname using prefix, and localpart. */
47    explicit QName
48    (
49          const XMLCh* const    prefix
50        , const XMLCh* const    localPart
51        , const unsigned int    uriId
52        , XMLStringPool * const qNameManager
53    );
54
55    /** Constructs a specified qname using prefix, and localpart. */
56    explicit QName
57    (
58          const XMLCh* const    rawName
59        , const int             colonInd
60        , const unsigned int    uriId
61        , XMLStringPool * const qNameManager
62    );
63
64    /** Constructs a specified qname using rawName. */
65    explicit QName
66    (
67          const XMLCh* const    rawName
68        , const unsigned int    uriId
69        , XMLStringPool * const qNameManager
70    );
71
72        /** Copy constructor. */
73        QName(const QName & qname);
74
75    QName& operator=(const QName&);
76
77        ~QName();
78
79    // -----------------------------------------------------------------------
80    //  Deprecated constructors
81    // -----------------------------------------------------------------------
82    /** Default constructor. */
83    QName(MemoryManager* const manager);
84
85    /** Constructs a specified qname using prefix, and localpart. */
86    QName
87    (
88          const XMLCh* const   prefix
89        , const XMLCh* const   localPart
90        , const unsigned int   uriId
91        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
92    );
93
94    /** Constructs a specified qname using prefix, and localpart. */
95    QName
96    (
97          const XMLCh* const   rawName
98        , const int            colonInd
99        , const unsigned int   uriId
100        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
101    );
102
103    /** Constructs a specified qname using rawName. */
104    QName
105    (
106          const XMLCh* const   rawName
107        , const unsigned int   uriId
108        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
109    );
110
111
112        // -----------------------------------------------------------------------
113        //  Getters
114        // -----------------------------------------------------------------------
115        const XMLCh* getPrefix() const;
116        XMLCh* getPrefix();
117
118        const XMLCh* getLocalPart() const;
119        XMLCh* getLocalPart();
120
121        unsigned int getURI() const;
122
123        const XMLCh* getRawName() const;
124        XMLCh* getRawName();
125
126        MemoryManager* getMemoryManager() const;
127
128        // -----------------------------------------------------------------------
129        //  Setters
130        // -----------------------------------------------------------------------
131        void setName
132        (
133                const XMLCh* const        rawName
134          , const int                 colonInd
135          , const unsigned int        uriId
136        );
137
138        void setName
139        (
140                const XMLCh* const        prefix
141          , const XMLCh* const        localPart
142          , const unsigned int        uriId
143        );
144
145        void setName
146        (
147                const XMLCh* const        rawName
148          , const unsigned int        uriId
149        );
150
151        void setPrefix(const XMLCh*) ;
152        void setLocalPart(const XMLCh*) ;
153        void setNPrefix(const XMLCh*, const XMLSize_t) ;
154        void setNLocalPart(const XMLCh*, const XMLSize_t) ;
155        void setURI(const unsigned int) ;
156
157        void setValues(const QName & qName);
158
159        // void set(QName & qName);
160
161        // -----------------------------------------------------------------------
162        //  comparison
163        // -----------------------------------------------------------------------
164        bool operator==(const QName&) const;
165
166        // -----------------------------------------------------------------------
167        //  Misc
168        // -----------------------------------------------------------------------
169        void cleanUp();
170
171        /***
172         * Support for Serialization/De-serialization
173         ***/
174        DECL_XSERIALIZABLE(QName)
175
176
177private :
178
179    XMLCh * getInternedValue(const XMLCh * string);
180
181        // -----------------------------------------------------------------------
182        //  Private instance variables
183        //
184        //  We copy the followings from XMLAttr.hpp, but stick to Java version's
185        //  naming convention
186        //
187        //  fPrefix
188    //  fPrefixLen
189        //      The prefix that was applied to this attribute's name, and the
190        //      current size of the buffer (minus one for the null.) Prefixes
191        //      really don't matter technically but it might be required for
192        //      practical reasons, to recreate the original document for instance.
193        //
194        //  fLocalPart
195    //  fLocalPartLen
196        //      The base part of the name of the attribute, and the current size
197        //      of the buffer (minus one, where the null is.)
198        //
199    //  fRawName
200        //      This is the QName form of the name, which is faulted in (from the
201        //      prefix and name) upon request. The size field indicates the
202        //      current size of the buffer (minus one for the null.) It will be
203        //      zero until filled in.
204        //
205        //  fURIId
206        //      The id of the URI that this attribute belongs to.
207        // -----------------------------------------------------------------------
208        unsigned int        fURIId;
209        XMLCh*              fPrefix;
210        XMLCh*              fLocalPart;
211        XMLCh*              fRawName;
212    XMLStringPool*      fStringPool;
213};
214
215// ---------------------------------------------------------------------------
216//  QName: Getter methods
217// ---------------------------------------------------------------------------
218inline const XMLCh* QName::getPrefix() const
219{
220        return fPrefix;
221}
222
223inline XMLCh* QName::getPrefix()
224{
225        return fPrefix;
226}
227
228inline const XMLCh* QName::getLocalPart() const
229{
230        return fLocalPart;
231}
232
233inline XMLCh* QName::getLocalPart()
234{
235        return fLocalPart;
236}
237
238inline unsigned int QName::getURI() const
239{
240        return fURIId;
241}
242
243inline MemoryManager* QName::getMemoryManager() const
244{
245    return fStringPool->fMemoryManager;
246}
247
248inline XMLCh * QName::getInternedValue(const XMLCh * string)
249{
250    return const_cast<XMLCh*>(fStringPool->getInternedValue(string));
251}
252
253// ---------------------------------------------------------------------------
254//  QName: Setter methods
255// ---------------------------------------------------------------------------
256inline void QName::setURI(const unsigned int uriId)
257{
258        fURIId = uriId;
259}
260
261inline void QName::setPrefix( const XMLCh* prefix )
262{
263        setNPrefix(prefix, XMLString::stringLen(prefix));
264}
265
266inline void QName::setLocalPart( const XMLCh* localPart )
267{
268        setNLocalPart(localPart, XMLString::stringLen(localPart));
269}
270
271#ifdef PRINT_DEBUG_MESSAGE
272static std::ostream & operator << (std::ostream & out, const QName * qName)
273{
274        if (qName)
275        {
276        out << qName->getRawName() << ',' << qName->getURI();
277        }
278        return out;
279}
280#endif
281
282XERCES_CPP_NAMESPACE_END
283
284#endif
Note: See TracBrowser for help on using the repository browser.