1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-27 00:40:21 +00:00
OpenMW/apps/opencs/model/tools/scriptcheck.hpp

66 lines
1.5 KiB
C++
Raw Normal View History

2014-02-14 13:38:30 +01:00
#ifndef CSM_TOOLS_SCRIPTCHECK_H
#define CSM_TOOLS_SCRIPTCHECK_H
2022-10-19 19:02:00 +02:00
#include <string>
2014-02-14 13:38:30 +01:00
#include <components/compiler/errorhandler.hpp>
#include <components/compiler/extensions.hpp>
2022-10-19 19:02:00 +02:00
#include <apps/opencs/model/doc/messages.hpp>
2014-02-14 13:38:30 +01:00
#include "../doc/stage.hpp"
#include "../world/scriptcontext.hpp"
namespace CSMDoc
{
class Document;
}
2022-10-19 19:02:00 +02:00
namespace Compiler
{
struct TokenLoc;
}
2014-02-14 13:38:30 +01:00
namespace CSMTools
{
/// \brief VerifyStage: make sure that scripts compile
class ScriptCheckStage : public CSMDoc::Stage, private Compiler::ErrorHandler
{
2022-09-22 21:26:05 +03:00
enum WarningMode
{
Mode_Ignore,
Mode_Normal,
Mode_Strict
};
const CSMDoc::Document& mDocument;
Compiler::Extensions mExtensions;
CSMWorld::ScriptContext mContext;
ESM::RefId mId;
2022-09-22 21:26:05 +03:00
std::string mFile;
CSMDoc::Messages* mMessages;
WarningMode mWarningMode;
bool mIgnoreBaseRecords;
CSMDoc::Message::Severity getSeverity(Type type);
void report(const std::string& message, const Compiler::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:
ScriptCheckStage(const CSMDoc::Document& document);
int setup() override;
///< \return number of steps
void perform(int stage, CSMDoc::Messages& messages) override;
///< Messages resulting from this tage will be appended to \a messages.
2014-02-14 13:38:30 +01:00
};
}
#endif