Main Page   Namespace List   Class Hierarchy   Compound List   File List   Header Files   Sources   Namespace Members   Compound Members   File Members  

MapperErrorHandler.cpp

00001 //$Header: /home/ben/Mapper/c++/RCS/MapperErrorHandler.cpp,v 6.8 2002/07/09 22:50:53 ben Exp $
00002 // Copyright Benedict Adamson 2002.
00003 // This file is part of Mapper.
00004 
00005 // Mapper is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation; either version 2 of the License, or
00008 // (at your option) any later version.
00009 
00010 // Mapper is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 
00015 // You should have received a copy of the GNU General Public License
00016 // along with Mapper; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 
00031 #include <fstream>
00032 
00033 #include <dom/DOM_DOMException.hpp>
00034 #include <dom/DOM_Element.hpp>
00035 #include <dom/DOM_Node.hpp>
00036 #include <sax/ErrorHandler.hpp>
00037 #include <sax/SAXParseException.hpp>
00038 #include <util/PlatformUtils.hpp>
00039 #include <util/XMLString.hpp>
00040 
00041 #include "DOM_output.h"
00042 #include "MapperErrorHandler.h"
00043 
00044 
00045 
00046 MapperErrorHandler::MapperErrorHandler(
00047    const char *name
00048    )
00049    :
00050    errors( 0U ),
00051    my_name( name )
00052 {
00053    //Do nothing
00054    {//Postoncditions:
00055       assert( this->errors == 0 );
00056       assert( this->my_name == name );
00057    };
00058 }
00059 
00060 
00061 
00062 MapperErrorHandler::~MapperErrorHandler(void)
00063 {
00064    //Do nothing
00065 }
00066 
00067 
00068 
00069 void MapperErrorHandler::report(
00070    const string entity,
00071    const unsigned line,
00072    const unsigned column,
00073    const string &severity,
00074    const string &message
00075    ) const
00076 {
00077    if( entity.length() ){
00078       cerr << entity << ':';
00079       if( line != (unsigned)(-1) ){//sic. line number available
00080          cerr << line << ':';
00081          if( column != (unsigned)(-1) )//sic. column number available
00082             cerr << column << ':';
00083          ;
00084       };
00085    };
00086    cerr << severity << ": " << message << "\n";
00087 }
00088 
00089 
00090 
00091 void MapperErrorHandler::report(
00092    const SAXParseException &ex,
00093    const string &severity
00094    ) const
00095 {
00096    const XMLCh *entity_SAX = ex.getSystemId();
00097    const char *entity_c = XMLString::transcode( entity_SAX );
00098    string entity;
00099    if( entity_c )
00100       entity = entity_c;
00101    else
00102       entity = "";
00103    ;
00104    const unsigned line = ex.getLineNumber();
00105    const unsigned column = ex.getColumnNumber();
00106    const char *message = XMLString::transcode( ex.getMessage() );
00107    this->report( string(entity), line, column, severity, string(message) );
00108    if( entity_c ) delete entity_c;
00109    delete message;
00110 }
00111 
00112 
00113 
00114 void MapperErrorHandler::warning(
00115    const SAXParseException &exception
00116    )
00117 {
00118    this->report( exception, "warning" );
00119 }
00120 
00121 
00122 
00123 void MapperErrorHandler::error(
00124    const SAXParseException &exception
00125    )
00126 {
00127    this->report( exception, "error" );
00128    this->errors++;
00129 }
00130 
00131 
00132 
00133 void MapperErrorHandler::fatalError(
00134    const SAXParseException &exception
00135    )
00136 {
00137    this->report( exception, "error: fatal error" );
00138    this->errors++;
00139 }
00140 
00141 
00142 
00143 void MapperErrorHandler::resetErrors(void)
00144 {
00145    this->errors = 0U;
00146 }
00147 
00148 
00149 
00150 void MapperErrorHandler::fatalError(
00151    const DOM_DOMException &exception
00152    )
00153 {
00154    const char *message = exception.msg.transcode();
00155    this->error( message );
00156    delete message;
00157 }
00158       
00159 
00160 
00161 void MapperErrorHandler::fatalError(
00162    const XMLException &exception
00163    )
00164 {
00165    this->errors++;
00166    char *m = XMLString::transcode( exception.getMessage() );
00167    this->report(
00168       exception.getSrcFile(),
00169       exception.getSrcLine(), (unsigned)(-1),
00170       "error (fatal)", m
00171       );
00172    delete m;
00173 }
00174 
00175 
00176 
00177 void MapperErrorHandler::error(
00178    const error::element_error &e
00179    )
00180 {
00181    this->errors++;
00182    cerr << "error: " << e.message << "\n";
00183    DOM_output::traceback( cerr, e.element );
00184 }
00185 
00186 
00187 
00188 void MapperErrorHandler::unexpectedError(void)
00189 {
00190    this->error( "unexpected error" );
00191 }
00192       
00193 
00194 
00195 void MapperErrorHandler::error(
00196    const char *message
00197    )
00198 {
00199    cerr << my_name << ":error: " << message << "\n";
00200    this->errors++;
00201 }
00202 
00203 
00204 
00205 void MapperErrorHandler::warning(
00206    const char *message
00207    )
00208 {
00209    cerr << my_name << ":warning: " << message << "\n";
00210 }
00211 
00212 
00213 
00214 void MapperErrorHandler::badOptionArgument(
00215    const char option,
00216    const char *optarg
00217    )
00218 {
00219    cerr << my_name << ":error: bad -" << option << " option: " << optarg << "\n";
00220    this->errors++;
00221 }

Generated at Sun Jul 14 20:38:10 2002 for Mapper by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999