source: icXML/icXML-devel/tests/src/ParserTest/ParserTest_Parser.hpp @ 2726

Last change on this file since 2726 was 2726, checked in by cameron, 7 years ago

Add original Xerces tests and samples directories

File size: 10.0 KB
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: ParserTest_Parser.hpp 470088 2006-11-01 20:35:12Z amassari $
20 */
21
22
23// ---------------------------------------------------------------------------
24//  Includes
25// ---------------------------------------------------------------------------
26#include    <xercesc/framework/XMLDocumentHandler.hpp>
27#include    <xercesc/framework/XMLErrorReporter.hpp>
28#include    <xercesc/validators/DTD/DocTypeHandler.hpp>
29
30XERCES_CPP_NAMESPACE_USE
31
32
33class TestParser :
34
35    public XMLDocumentHandler, public XMLErrorReporter, public DocTypeHandler
36{
37public :
38    // -----------------------------------------------------------------------
39    //  Constructors and Destructor
40    // -----------------------------------------------------------------------
41    TestParser();
42    ~TestParser();
43
44
45    // -----------------------------------------------------------------------
46    //  Setter methods
47    // -----------------------------------------------------------------------
48    void setDoNamespaces(const bool state);
49    void setScanner(XMLScanner* const state);
50    void setOutputType(const OutputTypes outType);
51    void setShowErrLoc(const bool state);
52    void setShowIntDTD(const bool state);
53    void setShowWarnings(const bool state);
54
55
56    // -----------------------------------------------------------------------
57    //  The XMLDocumentHandler interface
58    // -----------------------------------------------------------------------
59    virtual void docCharacters
60    (
61        const   XMLCh* const    chars
62        , const unsigned int    length
63        , const bool            cdataSection
64    );
65
66    virtual void docComment
67    (
68        const   XMLCh* const    comment
69    );
70
71    virtual void docPI
72    (
73        const   XMLCh* const    target
74        , const XMLCh* const    data
75    );
76
77    virtual void endDocument();
78
79    virtual void endElement
80    (
81        const   XMLElementDecl& elemDecl
82        , const unsigned int    uriId
83        , const bool            isRoot
84    );
85
86    virtual void endEntityReference
87    (
88        const   XMLEntityDecl&  entDecl
89    );
90
91    virtual void ignorableWhitespace
92    (
93        const   XMLCh* const    chars
94        , const unsigned int    length
95        , const bool            cdataSection
96    );
97
98    virtual void resetDocument();
99
100    virtual void startDocument();
101
102    virtual void startElement
103    (
104        const   XMLElementDecl&         elemDecl
105        , const unsigned int            elemURIId
106        , const XMLCh* const            elemPrefix
107        , const RefVectorOf<XMLAttr>&   attrList
108        , const unsigned int            attrCount
109        , const bool                    isEmpty
110        , const bool                    isRoot
111    );
112
113    virtual void startEntityReference
114    (
115        const   XMLEntityDecl&  entDecl
116    );
117
118    virtual void XMLDecl
119    (
120        const   XMLCh* const    versionStr
121        , const XMLCh* const    encodingStr
122        , const XMLCh* const    standaloneStr
123        , const XMLCh* const    autoEncStr
124    );
125
126
127    // -----------------------------------------------------------------------
128    //  Implementation of the XMLErrorReporter interface
129    // -----------------------------------------------------------------------
130    virtual void error
131    (
132        const   unsigned int                errCode
133        , const XMLCh* const                msgDomain
134        , const XMLErrorReporter::ErrTypes  type
135        , const XMLCh* const                text
136        , const XMLCh* const                systemId
137        , const XMLCh* const                publicId
138        , const unsigned int                lineNum
139        , const unsigned int                colNum
140    );
141
142    virtual void resetErrors();
143
144
145    // -----------------------------------------------------------------------
146    //  The document type handler virtual handler interface
147    // -----------------------------------------------------------------------
148    virtual void attDef
149    (
150        const   DTDElementDecl&     elemDecl
151        , const DTDAttDef&          attDef
152        , const bool                ignoring
153    );
154
155    virtual void doctypeComment
156    (
157        const   XMLCh* const    comment
158    );
159
160    virtual void doctypeDecl
161    (
162        const   DTDElementDecl& elemDecl
163        , const XMLCh* const    publicId
164        , const XMLCh* const    systemId
165        , const bool            hasIntSubset
166    );
167
168    virtual void doctypePI
169    (
170        const   XMLCh* const    target
171        , const XMLCh* const    data
172    );
173
174    virtual void doctypeWhitespace
175    (
176        const   XMLCh* const    chars
177        , const unsigned int    length
178    );
179
180    virtual void elementDecl
181    (
182        const   DTDElementDecl& decl
183        , const bool            isIgnored
184    );
185
186    virtual void endAttList
187    (
188        const   DTDElementDecl& elemDecl
189    );
190
191    virtual void endIntSubset();
192
193    virtual void endExtSubset();
194
195    virtual void entityDecl
196    (
197        const   DTDEntityDecl&  entityDecl
198        , const bool            isPEDecl
199        , const bool            isIgnored
200    );
201
202    virtual void resetDocType();
203
204    virtual void notationDecl
205    (
206        const   XMLNotationDecl&    notDecl
207        , const bool                isIgnored
208    );
209
210    virtual void startAttList
211    (
212        const   DTDElementDecl& elemDecl
213    );
214
215    virtual void startIntSubset();
216
217    virtual void startExtSubset();
218
219    virtual void TextDecl
220    (
221        const   XMLCh* const    versionStr
222        , const XMLCh* const    encodingStr
223    );
224
225
226private :
227    // -----------------------------------------------------------------------
228    //  Unimplemented constructors and operators
229    // -----------------------------------------------------------------------
230    TestParser(const TestParser&);
231    void operator=(const TestParser&);
232
233
234    // -----------------------------------------------------------------------
235    //  Private helper methods
236    // -----------------------------------------------------------------------
237    void showChar(const char toShow, const bool doCan);
238    void showChars
239    (
240        const   XMLCh* const    chars
241        , const unsigned int    length
242    );
243    void showIds(const XMLCh* const publicId, const XMLCh* const systemId);
244    void showString(const XMLCh* const toShow);
245
246
247    // -----------------------------------------------------------------------
248    //  Data members
249    //
250    //  fDoNamespaces
251    //      Indicates whether the user wanted us to be namespace aware or
252    //      not.
253    //
254    //  fInsideRoot
255    //      This is set once the first start element event is seen, and cleared
256    //      when the root element ends. Its used to support the canonical
257    //      format used by the Bosak tests. Basically it allows us to supress
258    //      the whitespace outside the internal subset but before the root
259    //      element.
260    //
261    //  fInExtSubSet
262    //      Indicates when we are in the external subset, so that we don't
263    //      display that part.
264    //
265    //  fIntDTDOutput
266    //      Indicates whether the data from the internal DTD subset is
267    //      output or not (only used if fXMLOutput is true.)
268    //
269    //  fNestingLevel
270    //      This is used to handle tabbing over nested elements. Each start
271    //      element bumps it up, and each end element bumps it down.
272    //
273    //  fOutputType
274    //      This flag controls the primary style of output used. It can
275    //      be set to do James Clark type canonical output, Sun style
276    //      canonical output, debug output, regular XML output, or none.
277    //
278    //  fScanner
279    //      The scanner we created to do the scanning.
280    //
281    //  fShowErrLoc
282    //      This flag turns on the special display mode that is used for
283    //      negative test testing. It puts out a special, condensed display
284    //      of error info that can be compared in subsequent runs to check
285    //      for changes. If its turned on, it forces the output type to
286    //      'none'.
287    //
288    //  fShowWarnings
289    //      Indicates whether warning messages should be displayed or not.
290    //
291    //  fSurrogate
292    //      Indicates that we got a surrogate char, so we have to wait for
293    //      the next char before we can output it. Its zero when not.
294    // -----------------------------------------------------------------------
295    bool            fDoNamespaces;
296    bool            fInExtSubset;
297    bool            fInsideRoot;
298    bool            fIntDTDOutput;
299    unsigned int    fNestingLevel;
300    OutputTypes     fOutputType;
301    XMLScanner*     fScanner;
302    bool            fShowErrLoc;
303    bool            fShowWarnings;
304    XMLCh           fSurrogate;
305};
306
307
308// ---------------------------------------------------------------------------
309//  TestParser: Setter Methods
310// ---------------------------------------------------------------------------
311inline void TestParser::setDoNamespaces(const bool state)
312{
313    fDoNamespaces = state;
314}
315
316inline void TestParser::setScanner(XMLScanner* const ourScanner)
317{
318    fScanner = ourScanner;
319}
320
321inline void TestParser::setOutputType(const OutputTypes outType)
322{
323    fOutputType = outType;
324}
325
326inline void TestParser::setShowIntDTD(const bool state)
327{
328    fIntDTDOutput = state;
329}
330
331inline void TestParser::setShowWarnings(const bool state)
332{
333    fShowWarnings = state;
334}
335
336inline void TestParser::setShowErrLoc(const bool state)
337{
338    fShowErrLoc = state;
339}
Note: See TracBrowser for help on using the repository browser.