CodeDocument.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "Language.h"
  8. #include <AK/LexicalPath.h>
  9. #include <LibGUI/TextDocument.h>
  10. namespace HackStudio {
  11. class CodeDocument final : public GUI::TextDocument {
  12. public:
  13. virtual ~CodeDocument() override;
  14. static NonnullRefPtr<CodeDocument> create(const String& file_path, Client* client = nullptr);
  15. static NonnullRefPtr<CodeDocument> create(Client* client = nullptr);
  16. const Vector<size_t>& breakpoint_lines() const { return m_breakpoint_lines; }
  17. Vector<size_t>& breakpoint_lines() { return m_breakpoint_lines; }
  18. Optional<size_t> execution_position() const { return m_execution_position; }
  19. void set_execution_position(size_t line) { m_execution_position = line; }
  20. void clear_execution_position() { m_execution_position.clear(); }
  21. const String& file_path() const { return m_file_path; }
  22. const String& language_name() const { return m_language_name; };
  23. Language language() const { return m_language; }
  24. virtual bool is_code_document() const override final { return true; }
  25. private:
  26. explicit CodeDocument(const String& file_path, Client* client = nullptr);
  27. explicit CodeDocument(Client* client = nullptr);
  28. String m_file_path;
  29. String m_language_name;
  30. Language m_language { Language::Unknown };
  31. Vector<size_t> m_breakpoint_lines;
  32. Optional<size_t> m_execution_position;
  33. };
  34. }