AutoCompleteEngine.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * Copyright (c) 2021, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "AutoCompleteEngine.h"
  7. namespace LanguageServers {
  8. AutoCompleteEngine::AutoCompleteEngine(const FileDB& filedb, bool should_store_all_declarations)
  9. : m_filedb(filedb)
  10. , m_store_all_declarations(should_store_all_declarations)
  11. {
  12. }
  13. AutoCompleteEngine::~AutoCompleteEngine()
  14. {
  15. }
  16. void AutoCompleteEngine::set_declarations_of_document(const String& filename, Vector<GUI::AutocompleteProvider::Declaration>&& declarations)
  17. {
  18. if (!set_declarations_of_document_callback)
  19. return;
  20. // Optimization - Only notify callback if declarations have changed
  21. if (auto previous_declarations = m_all_declarations.get(filename); previous_declarations.has_value()) {
  22. if (previous_declarations.value() == declarations)
  23. return;
  24. }
  25. if (m_store_all_declarations)
  26. m_all_declarations.set(filename, declarations);
  27. set_declarations_of_document_callback(filename, move(declarations));
  28. }
  29. }