#ifndef MALACHSCRIPT_DIAGNOSTICS_HPP #define MALACHSCRIPT_DIAGNOSTICS_HPP #include #include "Diagnostic.hpp" namespace MalachScript::Diagnostics { class Diagnostics { std::vector _messages; public: inline void Log(DiagnosticLevel level, DiagnosticType type, std::u8string_view scriptName, TextSpan span) { _messages.emplace_back(level, type, scriptName, span); } inline void LogTrace(DiagnosticType type, std::u8string_view scriptName, TextSpan span) { Log(DiagnosticLevel::Trace, type, scriptName, span); } inline void LogInfo(DiagnosticType type, std::u8string_view scriptName, TextSpan span) { Log(DiagnosticLevel::Information, type, scriptName, span); } inline void LogWarning(DiagnosticType type, std::u8string_view scriptName, TextSpan span) { Log(DiagnosticLevel::Warning, type, scriptName, span); } inline void LogError(DiagnosticType type, std::u8string_view scriptName, TextSpan span) { Log(DiagnosticLevel::Error, type, scriptName, span); } inline void LogCritical(DiagnosticType type, std::u8string_view scriptName, TextSpan span) { Log(DiagnosticLevel::Critical, type, scriptName, span); } [[nodiscard]] const std::vector& GetMessages() const noexcept { return _messages; } }; } #endif // MALACHSCRIPT_DIAGNOSTICS_HPP