#pragma once #include "ProjectFile.h" #include #include #include #include class Project { AK_MAKE_NONCOPYABLE(Project) AK_MAKE_NONMOVABLE(Project) public: static OwnPtr load_from_file(const String& path); [[nodiscard]] bool add_file(const String& filename); ProjectFile* get_file(const String& filename); GModel& model() { return *m_model; } template void for_each_text_file(Callback callback) const { for (auto& file : m_files) { callback(file); } } private: friend class ProjectModel; explicit Project(const String& path, Vector&& files); String m_path; RefPtr m_model; NonnullRefPtrVector m_files; };