You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw/components/compiler/streamerrorhandler.hpp

52 lines
1.3 KiB
C++

#ifndef COMPILER_STREAMERRORHANDLER_H_INCLUDED
#define COMPILER_STREAMERRORHANDLER_H_INCLUDED
#include "errorhandler.hpp"
namespace Compiler
{
class ContextOverride;
/// \brief Error handler implementation: Write errors into logging stream
class StreamErrorHandler : public ErrorHandler
{
std::string mContext;
friend class ContextOverride;
// not implemented
StreamErrorHandler(const StreamErrorHandler&);
StreamErrorHandler& operator=(const StreamErrorHandler&);
void report(const std::string& message, const TokenLoc& loc, Type type) override;
///< Report error to the user.
void report(const std::string& message, Type type) override;
///< Report a file related error
public:
void setContext(const std::string& context);
// constructors
StreamErrorHandler();
///< constructor
};
class ContextOverride
{
StreamErrorHandler& mHandler;
const std::string mContext;
public:
ContextOverride(StreamErrorHandler& handler, const std::string& context);
ContextOverride(const ContextOverride&) = delete;
ContextOverride& operator=(const ContextOverride&) = delete;
~ContextOverride();
};
}
#endif