Work on requirements management
This commit is contained in:
38
src/core/projectManager/requirementItem.h
Normal file
38
src/core/projectManager/requirementItem.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
|
||||
#include <api/requirement.h>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
namespace core::project
|
||||
{
|
||||
class RequirementManager;
|
||||
//--------------------------------------------------------------
|
||||
class RequirementItem : public std::enable_shared_from_this<RequirementItem>
|
||||
, public api::requirement::Requirement
|
||||
{
|
||||
using RequirementItemPtr = std::shared_ptr<RequirementItem>;
|
||||
|
||||
public:
|
||||
RequirementItem() = delete; // Default constructor
|
||||
virtual ~RequirementItem() = default; // Default destructor
|
||||
RequirementItem(const RequirementItem &obj) = delete; // Copy constructor
|
||||
RequirementItem(RequirementItem &&obj) noexcept = delete; // Move constructor
|
||||
RequirementItem &operator=(const RequirementItem &obj) = delete; // Copy assignment operator
|
||||
RequirementItem &operator=(RequirementItem &&obj) noexcept = delete; // Move assignment operator
|
||||
|
||||
explicit RequirementItem(RequirementManager &manager, // Constructor
|
||||
const std::shared_ptr<RequirementItem> &parentRequirement = nullptr);
|
||||
|
||||
// Children management functions
|
||||
void appendChild(const api::requirement::Requirement &child); // Append a child requirement item to this requirement item
|
||||
void removeChild(const std::string &childUuid); // Remove a child requirement item from this requirement item by its UUID
|
||||
[[nodiscard]] std::vector<RequirementItemPtr> getChildren() const; // Get the vector of child requirement items of this requirement item
|
||||
|
||||
protected:
|
||||
RequirementManager &m_requirementManager; // Reference to the requirement manager that owns this requirement item
|
||||
std::weak_ptr<RequirementItem> m_parent; // Weak pointer to the m_parent requirement item (nullptr for root)
|
||||
std::vector<RequirementItemPtr> m_children; // Vector of shared pointers to child requirement items
|
||||
};
|
||||
//--------------------------------------------------------------
|
||||
} // namespace core::project
|
||||
Reference in New Issue
Block a user