/* * DiagnosticStore.h - Central storage for diagnostics by document URI */ #ifndef KTE_LSP_DIAGNOSTIC_STORE_H #define KTE_LSP_DIAGNOSTIC_STORE_H #include #include #include #include #include "Diagnostic.h" namespace kte::lsp { class DiagnosticStore { public: void setDiagnostics(const std::string &uri, std::vector diagnostics); const std::vector &getDiagnostics(const std::string &uri) const; std::vector getDiagnosticsAtLine(const std::string &uri, int line) const; std::optional getDiagnosticAtPosition(const std::string &uri, Position pos) const; void clear(const std::string &uri); void clearAll(); int getErrorCount(const std::string &uri) const; int getWarningCount(const std::string &uri) const; private: std::unordered_map > diagnostics_; static bool containsLine(const Range &r, int line); static bool containsPosition(const Range &r, const Position &p); }; } // namespace kte::lsp #endif // KTE_LSP_DIAGNOSTIC_STORE_H