#pragma once #include #include #include #include #include "./types.hpp" namespace lsp::language::symbol { class SymbolStore { public: SymbolId Add(Symbol def); bool Remove(SymbolId id); void Clear(); const Symbol* Get(SymbolId id) const; std::vector> GetAll() const; std::vector FindByName(const std::string& name) const; private: SymbolId next_id_ = 1; std::unordered_map definitions_; std::unordered_map> by_name_; }; } // namespace lsp::language::symbol