MalachScript/src/Diagnostics/Diagnostic.hpp

30 lines
1.2 KiB
C++

#ifndef MALACHSCRIPT_DIAGNOSTIC_HPP
#define MALACHSCRIPT_DIAGNOSTIC_HPP
#include "../TextSpan.hpp"
#include "DiagnosticLevel.hpp"
#include "DiagnosticType.hpp"
namespace MalachScript::Diagnostics {
class Diagnostic {
DiagnosticLevel _level;
DiagnosticType _type;
std::string_view _scriptName;
TextSpan _span;
std::vector<std::string> _formats;
public:
inline Diagnostic(DiagnosticLevel level, DiagnosticType type, const std::string_view& scriptName, TextSpan span,
const std::vector<std::string>& formats = {})
: _level(level), _type(type), _scriptName(scriptName), _span(span), _formats(formats) {}
[[nodiscard]] inline DiagnosticLevel GetLevel() const noexcept { return _level; }
[[nodiscard]] inline DiagnosticType GetType() const noexcept { return _type; }
[[nodiscard]] inline const TextSpan& GetSpan() const noexcept { return _span; }
[[nodiscard]] inline const std::string_view& GetScriptName() const noexcept { return _scriptName; }
[[nodiscard]] inline const std::vector<std::string>& GetFormats() const noexcept { return _formats; }
};
}
#endif // MALACHSCRIPT_DIAGNOSTIC_HPP