#pragma once #include "TextDocument.h" #include #include #include #include class Project { AK_MAKE_NONCOPYABLE(Project) AK_MAKE_NONMOVABLE(Project) public: static OwnPtr load_from_file(const String& path); 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(Vector&& files); RefPtr m_model; NonnullRefPtrVector m_files; };