| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* |
| * $Id: XMLPScanToken.hpp 568078 2007-08-21 11:43:25Z amassari $ |
| */ |
| |
| |
| #if !defined(XMLPSCANTOKEN_HPP) |
| #define XMLPSCANTOKEN_HPP |
| |
| #include <xercesc/util/XMemory.hpp> |
| |
| XERCES_CPP_NAMESPACE_BEGIN |
| |
| class XMLScanner; |
| |
| /** |
| * This simple class is used as a sanity check when the scanner is used to |
| * do progressive parsing. It insures that things are not done out of |
| * sequence and that sequences of scan calls are made correctly to the |
| * right scanner instances. |
| * |
| * To client code, it is just a magic cookie which is obtained when a |
| * progressive parse is begun, and which is passed back in on each subsequent |
| * call of the progressive parse. |
| */ |
| class XMLPARSER_EXPORT XMLPScanToken : public XMemory |
| { |
| public : |
| // ----------------------------------------------------------------------- |
| // Constructors and Destructor |
| // ----------------------------------------------------------------------- |
| /** @name Constructor */ |
| //@{ |
| XMLPScanToken(); |
| XMLPScanToken(const XMLPScanToken& toCopy); |
| //@} |
| |
| /** @name Destructor */ |
| //@{ |
| ~XMLPScanToken(); |
| //@} |
| |
| |
| // ----------------------------------------------------------------------- |
| // Public operators |
| // ----------------------------------------------------------------------- |
| XMLPScanToken& operator=(const XMLPScanToken& toCopy); |
| |
| |
| protected : |
| // ----------------------------------------------------------------------- |
| // XMLScanner is our friend, can you say friend? Sure... |
| // ----------------------------------------------------------------------- |
| friend class XMLScanner; |
| |
| |
| // ----------------------------------------------------------------------- |
| // Hidden methods for use by XMLScanner |
| // ----------------------------------------------------------------------- |
| void set |
| ( |
| const XMLUInt32 scannerId |
| , const XMLUInt32 sequenceId |
| ); |
| |
| |
| private : |
| // ----------------------------------------------------------------------- |
| // Private data members |
| // |
| // fScannerId |
| // This field is set to the id of the scanner, to catch problems |
| // where a token is gotten from one scanner and passed to another. |
| // Each scanner is assigned an incrementing id. |
| // |
| // fSequenceId |
| // In order to avoid problems such as calling scanNext() without |
| // a call to scanFirst() and such, this value is set when scanFirst() |
| // is called and matches this token to the current sequence id of |
| // the scanner. |
| // ----------------------------------------------------------------------- |
| XMLUInt32 fScannerId; |
| XMLUInt32 fSequenceId; |
| }; |
| |
| |
| // --------------------------------------------------------------------------- |
| // XMLPScanToken: Constructors and Operators |
| // --------------------------------------------------------------------------- |
| inline XMLPScanToken::XMLPScanToken() : |
| |
| fScannerId(0) |
| , fSequenceId(0) |
| { |
| } |
| |
| inline XMLPScanToken::XMLPScanToken(const XMLPScanToken& toCopy) : |
| XMemory(toCopy) |
| , fScannerId(toCopy.fScannerId) |
| , fSequenceId(toCopy.fSequenceId) |
| { |
| } |
| |
| inline XMLPScanToken::~XMLPScanToken() |
| { |
| } |
| |
| |
| // --------------------------------------------------------------------------- |
| // XMLPScanToken: Public operators |
| // --------------------------------------------------------------------------- |
| inline XMLPScanToken& XMLPScanToken::operator=(const XMLPScanToken& toCopy) |
| { |
| if (this == &toCopy) |
| return *this; |
| |
| fScannerId = toCopy.fScannerId; |
| fSequenceId = toCopy.fSequenceId; |
| |
| return *this; |
| } |
| |
| |
| // --------------------------------------------------------------------------- |
| // XMLPScanToken: Hidden methods |
| // --------------------------------------------------------------------------- |
| inline void XMLPScanToken::set( const XMLUInt32 scannerId |
| , const XMLUInt32 sequenceId) |
| { |
| fScannerId = scannerId; |
| fSequenceId = sequenceId; |
| } |
| |
| XERCES_CPP_NAMESPACE_END |
| |
| #endif |