#pragma once

#include <api/requirement.h>
#include <memory>

namespace core::project
{
//--------------------------------------------------------------
class ProjectData
{
  using RequirementPtr = std::shared_ptr<api::requirement::Requirement>;

  public:
  ProjectData()                                      = default;     // Default constructor
  virtual ~ProjectData()                             = default;     // Default destructor
  ProjectData(const ProjectData &obj)                = delete;      // Copy constructor
  ProjectData(ProjectData &&obj) noexcept            = delete;      // Move constructor
  ProjectData &operator=(const ProjectData &obj)     = delete;      // Copy assignment operator
  ProjectData &operator=(ProjectData &&obj) noexcept = delete;      // Move assignment operator

  RequirementPtr getRootRequirement();     // Get the root requirement

  protected:
  RequirementPtr m_rootRequirement;     // Root requirement of the current project

  private:
};
//--------------------------------------------------------------
}     // namespace core::project
