diff -r 661f3784fe57 -r 127731b7107d secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/DGXMLScanner.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/DGXMLScanner.hpp Fri Jan 22 09:56:12 2010 +0200 @@ -0,0 +1,209 @@ +/* + * 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: DGXMLScanner.hpp 568078 2007-08-21 11:43:25Z amassari $ + */ + + +#if !defined(DGXMLSCANNER_HPP) +#define DGXMLSCANNER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDElementDecl; +class DTDGrammar; +class DTDValidator; + +// This is an integrated scanner class, which does DTD/XML Schema grammar +// processing. +class XMLPARSER_EXPORT DGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual unsigned int resolveQName + ( + const XMLCh* const qName + , XMLBuffer& prefixBufToFill + , const short mode + , int& prefixColonPos + ); + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual Grammar::GrammarType getCurrentGrammarType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DGXMLScanner(); + DGXMLScanner(const DGXMLScanner&); + DGXMLScanner& operator=(const DGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + unsigned int buildAttList + ( + const unsigned int attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + unsigned int resolvePrefix + ( + const XMLCh* const prefix + , const ElemStack::MapModes mode + ); + void updateNSMap + ( + const XMLCh* const attrPrefix + , const XMLCh* const attrLocalName + , const XMLCh* const attrValue + ); + void scanAttrListforNameSpaces(RefVectorOf* theAttrList, int attCount, XMLElementDecl* elemDecl); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool scanAttValue + ( + const XMLAttDef* const attDef + , const XMLCh *const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fDTDValidator + // The DTD validator instance. + // + // fElemState + // fElemStateSize + // Stores an element next state from DFA content model - used for + // wildcard validation + // + // fDTDElemNonDeclPool + // registry of "faulted-in" DTD element decls + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // mapping of attr QNames to the count of the last start tag in which they occurred + // + // ----------------------------------------------------------------------- + ValueVectorOf* fAttrNSList; + DTDValidator* fDTDValidator; + DTDGrammar* fDTDGrammar; + NameIdPool* fDTDElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf* fAttDefRegistry; + RefHashTableOf* fUndeclaredAttrRegistry; +}; + +inline const XMLCh* DGXMLScanner::getName() const +{ + return XMLUni::fgDGXMLScanner; +} + +inline Grammar::GrammarType DGXMLScanner::getCurrentGrammarType() const +{ + return Grammar::DTDGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif