source: NonGTP/Xerces/xerces-c_2_8_0/include/xercesc/internal/WFXMLScanner.hpp @ 2674

Revision 2674, 5.8 KB checked in by mattausch, 16 years ago (diff)
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: WFXMLScanner.hpp 568078 2007-08-21 11:43:25Z amassari $
20 */
21
22
23#if !defined(WFXMLSCANNER_HPP)
24#define WFXMLSCANNER_HPP
25
26#include <xercesc/internal/XMLScanner.hpp>
27#include <xercesc/util/ValueHashTableOf.hpp>
28#include <xercesc/util/ValueVectorOf.hpp>
29#include <xercesc/validators/DTD/DTDElementDecl.hpp>
30
31XERCES_CPP_NAMESPACE_BEGIN
32
33
34//  This is a a non-validating scanner. No DOCTYPE or XML Schema processing
35//  will take place.
36class XMLPARSER_EXPORT WFXMLScanner : public XMLScanner
37{
38public :
39    // -----------------------------------------------------------------------
40    //  Constructors and Destructor
41    // -----------------------------------------------------------------------
42    WFXMLScanner
43    (
44        XMLValidator* const       valToAdopt
45        , GrammarResolver* const  grammarResolver
46        , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
47    );
48    WFXMLScanner
49    (
50        XMLDocumentHandler* const docHandler
51        , DocTypeHandler* const   docTypeHandler
52        , XMLEntityHandler* const entityHandler
53        , XMLErrorReporter* const errReporter
54        , XMLValidator* const     valToAdopt
55        , GrammarResolver* const  grammarResolver
56        , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
57    );
58    virtual ~WFXMLScanner();
59
60    // -----------------------------------------------------------------------
61    //  XMLScanner public virtual methods
62    // -----------------------------------------------------------------------
63    virtual const XMLCh* getName() const;
64    virtual NameIdPool<DTDEntityDecl>* getEntityDeclPool();
65    virtual const NameIdPool<DTDEntityDecl>* getEntityDeclPool() const;
66    virtual unsigned int resolveQName
67    (
68        const   XMLCh* const        qName
69        ,       XMLBuffer&          prefixBufToFill
70        , const short               mode
71        ,       int&                prefixColonPos
72    );
73    virtual void scanDocument
74    (
75        const   InputSource&    src
76    );
77    virtual bool scanNext(XMLPScanToken& toFill);
78    virtual Grammar* loadGrammar
79    (
80        const   InputSource&    src
81        , const short           grammarType
82        , const bool            toCache = false
83    );
84
85private :
86    // -----------------------------------------------------------------------
87    //  Unimplemented constructors and operators
88    // -----------------------------------------------------------------------
89    WFXMLScanner();
90    WFXMLScanner(const WFXMLScanner&);
91    WFXMLScanner& operator=(const WFXMLScanner&);
92
93    // -----------------------------------------------------------------------
94    //  XMLScanner virtual methods
95    // -----------------------------------------------------------------------
96    virtual void scanCDSection();
97    virtual void scanCharData(XMLBuffer& toToUse);
98    virtual EntityExpRes scanEntityRef
99    (
100        const   bool    inAttVal
101        ,       XMLCh&  firstCh
102        ,       XMLCh&  secondCh
103        ,       bool&   escaped
104    );
105    virtual void scanDocTypeDecl();
106    virtual void scanReset(const InputSource& src);
107    virtual void sendCharData(XMLBuffer& toSend);
108    virtual InputSource* resolveSystemId(const XMLCh* const sysId
109                                        ,const XMLCh* const pubId);
110
111    // -----------------------------------------------------------------------
112    //  Private helper methods
113    // -----------------------------------------------------------------------
114    void commonInit();
115    void cleanUp();
116    unsigned int resolvePrefix
117    (
118        const   XMLCh* const        prefix
119        , const ElemStack::MapModes mode
120    );
121
122    // -----------------------------------------------------------------------
123    //  Private scanning methods
124    // -----------------------------------------------------------------------
125    bool scanAttValue
126    (
127        const   XMLCh* const    attrName
128        ,       XMLBuffer&      toFill
129    );
130    bool scanContent();
131    void scanEndTag(bool& gotData);
132    bool scanStartTag(bool& gotData);
133    bool scanStartTagNS(bool& gotData);
134
135    // -----------------------------------------------------------------------
136    //  Data members
137    //
138    //  fEntityTable
139    //      This the table that contains the default entity entries.
140    //
141    //  fAttrNameHashList
142    //      This contains the hash value for attribute names. It's used when
143    //      checking for duplicate attributes.
144    //
145    //  fAttrNSList
146    //      This contains XMLAttr objects that we need to map their prefixes
147    //      to URIs when namespace is enabled.
148    //
149    // -----------------------------------------------------------------------
150    unsigned int                       fElementIndex;
151    RefVectorOf<XMLElementDecl>*       fElements;
152    ValueHashTableOf<XMLCh>*           fEntityTable;
153    ValueVectorOf<unsigned int>*       fAttrNameHashList;
154    ValueVectorOf<XMLAttr*>*           fAttrNSList;
155    RefHashTableOf<XMLElementDecl>*    fElementLookup; 
156};
157
158inline const XMLCh* WFXMLScanner::getName() const
159{
160    return XMLUni::fgWFXMLScanner;
161}
162
163
164XERCES_CPP_NAMESPACE_END
165
166#endif
Note: See TracBrowser for help on using the repository browser.