openblocks/src/datamodel/instance.h

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();
};