Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

XercesXMLReaderAdaptor.C

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------*
00002  | Library QgarLib, graphics analysis and recognition                  |
00003  | Copyright (C) 2003  Qgar Project, LORIA                             |
00004  |                                                                     |
00005  | This library is free software; you can redistribute it and/or       |
00006  | modify it under the terms of the GNU Lesser General Public          |
00007  | License version 2.1, as published by the Free Software Foundation.  |
00008  |                                                                     |
00009  | This library is distributed in the hope that it will be useful,     |
00010  | but WITHOUT ANY WARRANTY; without even the implied warranty of      |
00011  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                |
00012  | See the GNU Lesser General Public License for more details.         |
00013  |                                                                     |
00014  | The GNU Lesser General Public License is included in the file       |
00015  | LICENSE.LGPL, in the root directory of the Qgar packaging. See      |
00016  | http://www.gnu.org/licenses/lgpl.html for the terms of the license. |
00017  | To receive a paper copy, write to the Free Software Foundation,     |
00018  | Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.       |
00019  |                                                                     |
00020  | Contact Project Qgar for any information:                           |
00021  |   LORIA - équipe Qgar                                               |
00022  |   B.P. 239, 54506 Vandoeuvre-lès-Nancy Cedex, France                |
00023  |   email: qgar-contact@loria.fr                                      |
00024  |   http://www.qgar.org/                                              |
00025  *---------------------------------------------------------------------*/
00026 
00027 
00028 /**
00029  * @file  XercesXMLReaderAdaptor.C
00030  * @brief Implementation of class qgxml::XercesXMLReaderAdaptor.
00031  *
00032  *        See file XercesXMLReaderAdaptor.H for the interface.
00033  *
00034  * @author <a href="mailto:qgar-contact@loria.fr?subject=Qgar fwd Jan Rendek">Jan Rendek</a>
00035  * @date   April 1, 2003  10:33
00036  * @since  Qgar 2.1
00037  */
00038 
00039 
00040 // For RCS/CVS use: Do not delete
00041 /* $Id: XercesXMLReaderAdaptor.C,v 1.3 2004/07/01 22:19:37 masini Exp $ */
00042 
00043 
00044 #include <qgarlib/xercesimpl/XercesXMLReaderAdaptor.H>
00045 
00046 // QGAR
00047 #include <qgarlib/xercesimpl/XercesQgarContentHandlerAdaptor.H>
00048 #include <qgarlib/xercesimpl/XercesQgarDTDHandlerAdaptor.H>
00049 #include <qgarlib/xercesimpl/XercesQgarEntityResolverAdaptor.H>
00050 #include <qgarlib/xercesimpl/XercesQgarErrorHandlerAdaptor.H>
00051 #include <qgarlib/xercesimpl/XercesQgarInputSourceAdaptor.H>
00052 
00053 // STD
00054 #include <stdexcept>
00055 
00056 // XERCES
00057 #include <xercesc/sax2/XMLReaderFactory.hpp>
00058 #include <xercesc/util/PlatformUtils.hpp>
00059 #include <xercesc/util/XMLException.hpp>
00060 #include <xercesc/util/XMLString.hpp>
00061 
00062 using namespace std;
00063 
00064 namespace qgxml {
00065 
00066 
00067 // ---------------------------------------------------------------------
00068 // C O N S T R U C T O R S
00069 // ---------------------------------------------------------------------
00070 
00071 // Default constructor
00072 XercesXMLReaderAdaptor::XercesXMLReaderAdaptor()
00073 {
00074 
00075   xercesc::XMLPlatformUtils::Initialize();
00076   _impl = xercesc::XMLReaderFactory::createXMLReader();
00077 
00078   //-- Initialize handler pointers
00079 
00080   _contentHandler = 0;
00081   _dtdHandler     = 0;
00082   _entityRes      = 0;
00083   _errorHandler   = 0;
00084 
00085 
00086   //-- Initialize wrapper objs
00087 
00088   _contentHandlerA = 0;
00089   _dtdHandlerA     = 0;
00090   _entityResA      = 0;
00091   _errorHandlerA   = 0;
00092 }
00093 
00094 
00095 
00096 // ---------------------------------------------------------------------
00097 // D E S T R U C T O R
00098 // ---------------------------------------------------------------------
00099 
00100 XercesXMLReaderAdaptor::~XercesXMLReaderAdaptor()
00101 { 
00102   delete _impl;
00103 
00104   delete _contentHandlerA;
00105   delete _dtdHandlerA;
00106   delete _entityResA;
00107   delete _errorHandlerA;
00108 }
00109 
00110 
00111 
00112 // ---------------------------------------------------------------------
00113 // A C C E S S
00114 // ---------------------------------------------------------------------
00115 
00116 ContentHandler * 
00117 XercesXMLReaderAdaptor::getContentHandler() const
00118 {
00119   return _contentHandler;;
00120 }
00121   
00122 // ---------------------------------------------------------------------
00123 
00124 DTDHandler *
00125 XercesXMLReaderAdaptor::getDTDHandler() const
00126 {
00127   return _dtdHandler;
00128 }
00129 
00130 // ---------------------------------------------------------------------
00131 
00132 EntityResolver * 
00133 XercesXMLReaderAdaptor::getEntityResolver() const
00134 {
00135   return _entityRes;
00136 }
00137 
00138 // ---------------------------------------------------------------------
00139 
00140 ErrorHandler * 
00141 XercesXMLReaderAdaptor::getErrorHandler() const
00142 {
00143   return _errorHandler;
00144 }
00145 // ----------------------------------------------------------------------
00146 
00147 bool 
00148 XercesXMLReaderAdaptor::getFeature(const string& name) const
00149 {
00150   return _impl->getFeature(_sc.convert(name));
00151 }
00152 
00153 // ---------------------------------------------------------------------
00154 
00155 void * 
00156 XercesXMLReaderAdaptor::getProperty(const string& name) const
00157 {
00158   return _impl->getProperty(_sc.convert(name));
00159 }
00160 
00161 
00162 // ---------------------------------------------------------------------
00163 // T R A N S F O R M A T I O N
00164 // ----------------------------------------------------------------------
00165 
00166 void 
00167 XercesXMLReaderAdaptor::setContentHandler(ContentHandler * handler)
00168 {
00169   _contentHandler = handler;
00170 
00171   delete _contentHandlerA;
00172   _contentHandlerA = new XercesQgarContentHandlerAdaptor(handler);
00173 
00174   _impl->setContentHandler(_contentHandlerA);
00175 }
00176 
00177 // ---------------------------------------------------------------------
00178 
00179 void 
00180 XercesXMLReaderAdaptor::setDTDHandler(DTDHandler * handler)
00181 {
00182   _dtdHandler = handler;
00183   
00184   delete _dtdHandlerA;
00185   _dtdHandlerA = new XercesQgarDTDHandlerAdaptor(handler);
00186 
00187   _impl->setDTDHandler(_dtdHandlerA);
00188 }
00189 
00190 // ---------------------------------------------------------------------
00191 
00192 void 
00193 XercesXMLReaderAdaptor::setEntityResolver(EntityResolver * resolver)
00194 {
00195   _entityRes = resolver;
00196 
00197   delete _entityResA;
00198   _entityResA = new XercesQgarEntityResolverAdaptor(resolver);
00199 
00200   _impl->setEntityResolver(_entityResA);
00201 }
00202 
00203 // ---------------------------------------------------------------------
00204 
00205 void 
00206 XercesXMLReaderAdaptor::setErrorHandler(ErrorHandler * handler)
00207 {
00208   _errorHandler = handler;
00209 
00210   delete _errorHandlerA;
00211   _errorHandlerA = new XercesQgarErrorHandlerAdaptor(handler);
00212 
00213   _impl->setErrorHandler(_errorHandlerA);
00214 }
00215 
00216 // ---------------------------------------------------------------------
00217 
00218 void 
00219 XercesXMLReaderAdaptor::setFeature(const string& name, bool value)
00220 {
00221   _impl->setFeature(_sc(name), value);
00222 }
00223 
00224 // ---------------------------------------------------------------------
00225 
00226 void 
00227 XercesXMLReaderAdaptor::setProperty(const string& name, void * value)
00228 {
00229   _impl->setProperty(_sc(name), value);
00230 }
00231 
00232 
00233 
00234 // -------------------------------------------------------------------
00235 // O T H E R 
00236 // -------------------------------------------------------------------
00237 
00238 void 
00239 XercesXMLReaderAdaptor::parse(InputSource& input)
00240 {
00241   XercesQgarInputSourceAdaptor source(&input);
00242 
00243   _impl->parse(source);
00244 }
00245 
00246 // ---------------------------------------------------------------------
00247 
00248 void 
00249 XercesXMLReaderAdaptor::parse(const string& systemId)
00250 {
00251   _impl->parse(_sc.convert(systemId));
00252 }
00253 
00254 
00255 // ----------------------------------------------------------------------
00256 
00257 } // namespace qgxml