CodeComprehensionEngine.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) 2021, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "CodeComprehensionEngine.h"
  7. namespace LanguageServers {
  8. CodeComprehensionEngine::CodeComprehensionEngine(const FileDB& filedb, bool should_store_all_declarations)
  9. : m_filedb(filedb)
  10. , m_store_all_declarations(should_store_all_declarations)
  11. {
  12. }
  13. CodeComprehensionEngine::~CodeComprehensionEngine()
  14. {
  15. }
  16. void CodeComprehensionEngine::set_declarations_of_document(const String& filename, Vector<GUI::AutocompleteProvider::Declaration>&& declarations)
  17. {
  18. // Callback may not be configured if we're running tests
  19. if (!set_declarations_of_document_callback)
  20. return;
  21. // Optimization - Only notify callback if declarations have changed
  22. if (auto previous_declarations = m_all_declarations.get(filename); previous_declarations.has_value()) {
  23. if (previous_declarations.value() == declarations)
  24. return;
  25. }
  26. if (m_store_all_declarations)
  27. m_all_declarations.set(filename, declarations);
  28. set_declarations_of_document_callback(filename, move(declarations));
  29. }
  30. void CodeComprehensionEngine::set_todo_entries_of_document(String const& filename, Vector<Cpp::Parser::TodoEntry>&& todo_entries)
  31. {
  32. // Callback may not be configured if we're running tests
  33. if (!set_todo_entries_of_document_callback)
  34. return;
  35. set_todo_entries_of_document_callback(filename, move(todo_entries));
  36. }
  37. }