source: NonGTP/Xerces/xercesc/framework/XMLPScanToken.hpp @ 188

Revision 188, 7.4 KB checked in by mattausch, 19 years ago (diff)

added xercesc to support

Line 
1/*
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in
16 *    the documentation and/or other materials provided with the
17 *    distribution.
18 *
19 * 3. The end-user documentation included with the redistribution,
20 *    if any, must include the following acknowledgment:
21 *       "This product includes software developed by the
22 *        Apache Software Foundation (http://www.apache.org/)."
23 *    Alternately, this acknowledgment may appear in the software itself,
24 *    if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The names "Xerces" and "Apache Software Foundation" must
27 *    not be used to endorse or promote products derived from this
28 *    software without prior written permission. For written
29 *    permission, please contact apache\@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache",
32 *    nor may "Apache" appear in their name, without prior written
33 *    permission of the Apache Software Foundation.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation, and was
51 * originally based on software copyright (c) 1999, International
52 * Business Machines, Inc., http://www.ibm.com .  For more information
53 * on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57/*
58 * $Log: XMLPScanToken.hpp,v $
59 * Revision 1.3  2003/05/15 18:26:07  knoaman
60 * Partial implementation of the configurable memory manager.
61 *
62 * Revision 1.2  2002/11/04 15:00:21  tng
63 * C++ Namespace Support.
64 *
65 * Revision 1.1.1.1  2002/02/01 22:21:52  peiyongz
66 * sane_include
67 *
68 * Revision 1.4  2000/02/24 20:00:23  abagchi
69 * Swat for removing Log from API docs
70 *
71 * Revision 1.3  2000/02/15 01:21:31  roddey
72 * Some initial documentation improvements. More to come...
73 *
74 * Revision 1.2  2000/02/06 07:47:48  rahulj
75 * Year 2K copyright swat.
76 *
77 * Revision 1.1.1.1  1999/11/09 01:08:36  twl
78 * Initial checkin
79 *
80 * Revision 1.2  1999/11/08 20:44:39  rahul
81 * Swat for adding in Product name and CVS comment log variable.
82 *
83 */
84
85
86#if !defined(XMLPSCANTOKEN_HPP)
87#define XMLPSCANTOKEN_HPP
88
89#include <xercesc/util/XMemory.hpp>
90
91XERCES_CPP_NAMESPACE_BEGIN
92
93class XMLScanner;
94
95/**
96 *  This simple class is used as a sanity check when the scanner is used to
97 *  do progressive parsing. It insures that things are not done out of
98 *  sequence and that sequences of scan calls are made correctly to the
99 *  right scanner instances.
100 *
101 *  To client code, it is just a magic cookie which is obtained when a
102 *  progressive parse is begun, and which is passed back in on each subsequent
103 *  call of the progressive parse.
104 */
105class XMLPARSER_EXPORT XMLPScanToken : public XMemory
106{
107public :
108    // -----------------------------------------------------------------------
109    //  Constructors and Destructor
110    // -----------------------------------------------------------------------
111    /** @name Constructor */
112    //@{
113    XMLPScanToken();
114    XMLPScanToken(const XMLPScanToken& toCopy);
115    //@}
116
117    /** @name Destructor */
118    //@{
119    ~XMLPScanToken();
120    //@}
121
122
123    // -----------------------------------------------------------------------
124    //  Public operators
125    // -----------------------------------------------------------------------
126    XMLPScanToken& operator=(const XMLPScanToken& toCopy);
127
128
129protected :
130    // -----------------------------------------------------------------------
131    //  XMLScanner is our friend, can you say friend? Sure...
132    // -----------------------------------------------------------------------
133    friend class XMLScanner;
134
135
136    // -----------------------------------------------------------------------
137    //  Hidden methods for use by XMLScanner
138    // -----------------------------------------------------------------------
139    void set
140    (
141        const   XMLUInt32   scannerId
142        , const XMLUInt32   sequenceId
143    );
144
145
146private :
147    // -----------------------------------------------------------------------
148    //  Private data members
149    //
150    //  fScannerId
151    //      This field is set to the id of the scanner, to catch problems
152    //      where a token is gotten from one scanner and passed to another.
153    //      Each scanner is assigned an incrementing id.
154    //
155    //  fSequenceId
156    //      In order to avoid problems such as calling scanNext() without
157    //      a call to scanFirst() and such, this value is set when scanFirst()
158    //      is called and matches this token to the current sequence id of
159    //      the scanner.
160    // -----------------------------------------------------------------------
161    XMLUInt32   fScannerId;
162    XMLUInt32   fSequenceId;
163};
164
165
166// ---------------------------------------------------------------------------
167//  XMLPScanToken: Constructors and Operators
168// ---------------------------------------------------------------------------
169inline XMLPScanToken::XMLPScanToken() :
170
171    fScannerId(0)
172    , fSequenceId(0)
173{
174}
175
176inline XMLPScanToken::XMLPScanToken(const XMLPScanToken& toCopy) :
177
178    fScannerId(toCopy.fScannerId)
179    , fSequenceId(toCopy.fSequenceId)
180{
181}
182
183inline XMLPScanToken::~XMLPScanToken()
184{
185}
186
187
188// ---------------------------------------------------------------------------
189//  XMLPScanToken: Public operators
190// ---------------------------------------------------------------------------
191inline XMLPScanToken& XMLPScanToken::operator=(const XMLPScanToken& toCopy)
192{
193    if (this == &toCopy)
194        return *this;
195
196    fScannerId = toCopy.fScannerId;
197    fSequenceId = toCopy.fSequenceId;
198
199    return *this;
200}
201
202
203// ---------------------------------------------------------------------------
204//  XMLPScanToken: Hidden methods
205// ---------------------------------------------------------------------------
206inline void XMLPScanToken::set( const   XMLUInt32   scannerId
207                                , const XMLUInt32   sequenceId)
208{
209    fScannerId = scannerId;
210    fSequenceId = sequenceId;
211}
212
213XERCES_CPP_NAMESPACE_END
214
215#endif
Note: See TracBrowser for help on using the repository browser.