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

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

Initial check-in of icXML 0.8 source files

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