Something went wrong. Try again.
OpenMW is an open implementation of the Morrowind engine
Something went wrong. Try again.
2.1 kB · 102 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103#include "errorhandler.hpp"
namespace Compiler{ ErrorHandler::ErrorHandler() : mWarnings(0) , mErrors(0) , mWarningsMode(1) , mDowngradeErrors(false) { }
ErrorHandler::~ErrorHandler() = default;
// Was compiling successful?
bool ErrorHandler::isGood() const { return mErrors == 0; }
// Return number of errors
int ErrorHandler::countErrors() const { return mErrors; }
// Return number of warnings
int ErrorHandler::countWarnings() const { return mWarnings; }
// Generate a warning message.
void ErrorHandler::warning(const std::string& message, const TokenLoc& loc) { if (mWarningsMode == 1 || // temporarily change from mode 2 to mode 1 if error downgrading is enabled to // avoid infinite recursion (mWarningsMode == 2 && mDowngradeErrors)) { ++mWarnings; report(message, loc, WarningMessage); } else if (mWarningsMode == 2) error(message, loc); }
// Generate an error message.
void ErrorHandler::error(const std::string& message, const TokenLoc& loc) { if (mDowngradeErrors) { warning(message, loc); return; }
++mErrors; report(message, loc, ErrorMessage); }
// Generate an error message for an unexpected EOF.
void ErrorHandler::endOfFile() { ++mErrors; report("unexpected end of file", ErrorMessage); }
// Remove all previous error/warning events
void ErrorHandler::reset() { mErrors = mWarnings = 0; }
void ErrorHandler::setWarningsMode(int mode) { mWarningsMode = mode; }
void ErrorHandler::downgradeErrors(bool downgrade) { mDowngradeErrors = downgrade; }
ErrorDowngrade::ErrorDowngrade(ErrorHandler& handler) : mHandler(handler) { mHandler.downgradeErrors(true); }
ErrorDowngrade::~ErrorDowngrade() { mHandler.downgradeErrors(false); }
}