20 lines
No EOL
587 B
C++
20 lines
No EOL
587 B
C++
#pragma once
|
|
#include <memory>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
// The base class for all objects in the data model
|
|
class Instance : std::enable_shared_from_this<Instance> {
|
|
private:
|
|
std::optional<std::weak_ptr<Instance>> Parent;
|
|
std::vector<std::shared_ptr<Instance>> children;
|
|
public:
|
|
std::string Name;
|
|
std::optional<std::shared_ptr<Instance>> GetParent();
|
|
void SetParent(std::optional<std::shared_ptr<Instance>> newParent);
|
|
std::vector<std::shared_ptr<Instance>> GetChildren();
|
|
|
|
virtual void Init();
|
|
Instance CloneInternal();
|
|
}; |