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

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

Fixes for icXML 0.9

File size: 6.5 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 <icxercesc/util/PlatformUtils.hpp>
20#include <xercesc/internal/XSerializable.hpp>
21#include <icxmlc/XMLConfig.hpp>
22
23XERCES_CPP_NAMESPACE_BEGIN
24
25class XMLSymbolTable;
26
27class XMLUTIL_EXPORT QName : public XSerializable, public XMemory
28{
29public :
30
31    friend class XMLSymbolTable;
32    friend class XMLSymbol;
33
34        // NOTE: need to deprecate these later instead...
35        #ifndef USE_SMART_QNAME_MANAGER
36        // -----------------------------------------------------------------------
37        //  Constructors and Destructor
38        // -----------------------------------------------------------------------
39        /** Default constructor. */
40        QName(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
41
42        /** Constructs a specified qname using prefix, and localpart. */
43        QName
44        (
45                  const XMLCh* const   prefix
46                , const XMLCh* const   localPart
47                , const unsigned int   uriId
48                , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
49        );
50
51        /** Constructs a specified qname using prefix, and localpart. */
52        QName
53        (
54                  const XMLCh* const   rawName
55                , const int            colonInd
56                , const unsigned int   uriId
57                , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
58        );
59
60        /** Constructs a specified qname using rawName. */
61        QName
62        (
63                  const XMLCh* const   rawName
64                , const unsigned int   uriId
65                , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
66        );
67        #endif
68
69
70        /** Copy constructor. */
71        QName(const QName & qname);
72
73        ~QName();
74
75        // -----------------------------------------------------------------------
76        //  Getters
77        // -----------------------------------------------------------------------
78        const XMLCh* getPrefix() const;
79        XMLCh* getPrefix();
80
81        const XMLCh* getLocalPart() const;
82        XMLCh* getLocalPart();
83
84        unsigned int getURI() const;
85
86        const XMLCh* getRawName() const;
87        XMLCh* getRawName();
88
89        const XMLSize_t getRawLength() const;
90
91        MemoryManager* getMemoryManager() const;
92
93        // -----------------------------------------------------------------------
94        //  Setters
95        // -----------------------------------------------------------------------
96        void setName
97        (
98                const XMLCh* const        rawName
99          , const int                 colonInd
100          , const unsigned int        uriId
101        );
102
103        void setName
104        (
105                const XMLCh* const        prefix
106          , const XMLCh* const        localPart
107          , const unsigned int        uriId
108        );
109
110        void setName
111        (
112                const XMLCh* const        rawName
113          , const unsigned int        uriId
114        );
115
116        void setPrefix(const XMLCh*) ;
117        void setLocalPart(const XMLCh*) ;
118        void setNPrefix(const XMLCh*, const XMLSize_t) ;
119        void setNLocalPart(const XMLCh*, const XMLSize_t) ;
120        void setURI(const unsigned int) ;
121
122        void setValues(const QName & qName);
123
124        // void set(QName & qName);
125
126        // -----------------------------------------------------------------------
127        //  comparison
128        // -----------------------------------------------------------------------
129        bool operator==(const QName&) const;
130
131        // -----------------------------------------------------------------------
132        //  Misc
133        // -----------------------------------------------------------------------
134        void cleanUp();
135
136        /***
137         * Support for Serialization/De-serialization
138         ***/
139        DECL_XSERIALIZABLE(QName)
140
141protected:
142
143    QName& operator=(const QName&);
144
145private :
146
147
148        // -----------------------------------------------------------------------
149        //  Private instance variables
150        //
151        //  We copy the followings from XMLAttr.hpp, but stick to Java version's
152        //  naming convention
153        //
154        //  fPrefix
155    //  fPrefixLen
156        //      The prefix that was applied to this attribute's name, and the
157        //      current size of the buffer (minus one for the null.) Prefixes
158        //      really don't matter technically but it might be required for
159        //      practical reasons, to recreate the original document for instance.
160        //
161        //  fLocalPart
162    //  fLocalPartLen
163        //      The base part of the name of the attribute, and the current size
164        //      of the buffer (minus one, where the null is.)
165        //
166    //  fRawName
167        //      This is the QName form of the name, which is faulted in (from the
168        //      prefix and name) upon request. The size field indicates the
169        //      current size of the buffer (minus one for the null.) It will be
170        //      zero until filled in.
171        //
172        //  fURIId
173        //      The id of the URI that this attribute belongs to.
174        // -----------------------------------------------------------------------
175        unsigned int        fURIId;
176
177        XMLCh*              fNameBuf;
178
179        XMLCh*              fPrefix;
180        int                 fPrefixLen;
181
182        XMLCh*              fLocalPart;
183        int                 fLocalPartLen;
184
185        XMLCh*              fRawName;
186
187
188        MemoryManager*      fMemoryManager;
189};
190
191// ---------------------------------------------------------------------------
192//  QName: Getter methods
193// ---------------------------------------------------------------------------
194inline const XMLCh* QName::getPrefix() const
195{
196        return fPrefix;
197}
198
199inline XMLCh* QName::getPrefix()
200{
201        return fPrefix;
202}
203
204inline const XMLCh* QName::getLocalPart() const
205{
206        return fLocalPart;
207}
208
209inline XMLCh* QName::getLocalPart()
210{
211        return fLocalPart;
212}
213
214inline unsigned int QName::getURI() const
215{
216        return fURIId;
217}
218
219inline const XMLSize_t QName::getRawLength() const
220{
221        return fPrefixLen + fLocalPartLen + 1;
222}
223
224inline MemoryManager* QName::getMemoryManager() const
225{
226        return fMemoryManager;
227}
228
229// ---------------------------------------------------------------------------
230//  QName: Setter methods
231// ---------------------------------------------------------------------------
232inline void QName::setURI(const unsigned int uriId)
233{
234        fURIId = uriId;
235}
236
237inline void QName::setPrefix( const XMLCh* prefix )
238{
239        setNPrefix(prefix, XMLString::stringLen(prefix));
240}
241
242inline void QName::setLocalPart( const XMLCh* localPart )
243{
244        setNLocalPart(localPart, XMLString::stringLen(localPart));
245}
246
247#ifdef PRINT_DEBUG_MESSAGE
248static std::ostream & operator << (std::ostream & out, const QName * qName)
249{
250        if (qName)
251        {
252        out << qName->getRawName() << ',' << qName->getURI();
253        }
254        return out;
255}
256#endif
257
258XERCES_CPP_NAMESPACE_END
259
260#endif
Note: See TracBrowser for help on using the repository browser.