GME  13
XMLScannerResolver.cpp
Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  * 
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  * 
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 /*
00019  * $Id: XMLScannerResolver.cpp 471747 2006-11-06 14:31:56Z amassari $
00020  */
00021 
00022 
00023 // ---------------------------------------------------------------------------
00024 //  Includes
00025 // ---------------------------------------------------------------------------
00026 #include <xercesc/internal/XMLScannerResolver.hpp>
00027 #include <xercesc/internal/WFXMLScanner.hpp>
00028 #include <xercesc/internal/DGXMLScanner.hpp>
00029 #include <xercesc/internal/SGXMLScanner.hpp>
00030 #include <xercesc/internal/IGXMLScanner.hpp>
00031 
00032 XERCES_CPP_NAMESPACE_BEGIN
00033 
00034 // ---------------------------------------------------------------------------
00035 //  XMLScannerResolver: Public static methods
00036 // ---------------------------------------------------------------------------
00037 XMLScanner*
00038 XMLScannerResolver::getDefaultScanner( XMLValidator* const  valToAdopt
00039                                      , GrammarResolver* const grammarResolver
00040                                      , MemoryManager* const manager)
00041 {
00042     return new (manager) IGXMLScanner(valToAdopt, grammarResolver, manager);
00043 }
00044 
00045 XMLScanner*
00046 XMLScannerResolver::resolveScanner( const XMLCh* const   scannerName
00047                                   , XMLValidator* const  valToAdopt
00048                                   , GrammarResolver* const grammarResolver
00049                                   , MemoryManager* const manager)
00050 {
00051     if (XMLString::equals(scannerName, XMLUni::fgWFXMLScanner))
00052         return new (manager) WFXMLScanner(valToAdopt, grammarResolver, manager);
00053     else if (XMLString::equals(scannerName, XMLUni::fgIGXMLScanner))
00054         return new (manager) IGXMLScanner(valToAdopt, grammarResolver, manager);
00055     else if (XMLString::equals(scannerName, XMLUni::fgSGXMLScanner))
00056         return new (manager) SGXMLScanner(valToAdopt, grammarResolver, manager);
00057     else if (XMLString::equals(scannerName, XMLUni::fgDGXMLScanner))
00058         return new (manager) DGXMLScanner(valToAdopt, grammarResolver, manager);
00059 
00060     // REVISIT: throw an exception or return a default one?
00061     return 0;
00062 }
00063 
00064 XMLScanner*
00065 XMLScannerResolver::resolveScanner( const XMLCh* const        scannerName
00066                                   , XMLDocumentHandler* const docHandler
00067                                   , DocTypeHandler* const     docTypeHandler
00068                                   , XMLEntityHandler* const   entityHandler
00069                                   , XMLErrorReporter* const   errReporter
00070                                   , XMLValidator* const       valToAdopt
00071                                   , GrammarResolver* const    grammarResolver
00072                                   , MemoryManager* const      manager)
00073 {
00074     if (XMLString::equals(scannerName, XMLUni::fgWFXMLScanner))
00075         return new (manager) WFXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager);
00076     else if (XMLString::equals(scannerName, XMLUni::fgIGXMLScanner))
00077         return new (manager) IGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager);
00078     else if (XMLString::equals(scannerName, XMLUni::fgSGXMLScanner))
00079         return new (manager) SGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager);
00080     else if (XMLString::equals(scannerName, XMLUni::fgDGXMLScanner))
00081         return new (manager) DGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager);
00082 
00083     // REVISIT: throw an exception or return a default one?
00084     return 0;
00085 }
00086 
00087 
00088 XERCES_CPP_NAMESPACE_END