Ember
Loading...
Searching...
No Matches
ITreeStructure.h
Go to the documentation of this file.
1#pragma once
2
3#include "ITreeNode.h"
4#include <functional>
5#include <memory>
6#include <vector>
7
8namespace EmberCore {
9
18 public:
19 virtual ~ITreeStructure() = default;
20
21 // Tree structure access
22 virtual ITreeNode *GetRootNode() const = 0;
23 virtual bool HasRootNode() const { return GetRootNode() != nullptr; }
24
25 // Tree properties
26 virtual const String &GetName() const = 0;
27 virtual const String &GetDescription() const = 0;
28
29 // Tree statistics
30 virtual size_t GetNodeCount() const = 0;
31 virtual size_t GetMaxDepth() const = 0;
32
33 // Node search operations
34 virtual ITreeNode *FindNodeById(size_t id) const = 0;
35 virtual ITreeNode *FindNodeByName(const String &name) const = 0;
36 virtual std::vector<ITreeNode *> FindNodesByType(ITreeNode::NodeType type) const = 0;
37
38 // Tree traversal
39 virtual void TraverseNodes(std::function<void(ITreeNode *)> visitor) = 0;
40 virtual void TraverseNodes(std::function<void(const ITreeNode *)> visitor) const = 0;
41
42 // Tree validation
43 virtual bool IsValid() const = 0;
44 virtual bool HasCycles() const = 0;
45
46 // Utility operations
47 virtual std::vector<ITreeNode *> GetAllNodes() = 0;
48 virtual std::vector<const ITreeNode *> GetAllNodes() const = 0;
49
50 // Tree metadata for visualization
51 virtual String GetTreeStructure() const = 0;
52 virtual void PrintTree() const = 0;
53};
54
55} // namespace EmberCore
Abstract interface for tree nodes that can be visualized.
Definition ITreeNode.h:31
NodeType
Node types for visualization categorization.
Definition ITreeNode.h:36
Abstract interface for tree structures that can be visualized.
virtual std::vector< ITreeNode * > FindNodesByType(ITreeNode::NodeType type) const =0
virtual void TraverseNodes(std::function< void(ITreeNode *)> visitor)=0
virtual std::vector< const ITreeNode * > GetAllNodes() const =0
virtual void PrintTree() const =0
virtual bool IsValid() const =0
virtual ITreeNode * FindNodeByName(const String &name) const =0
virtual const String & GetName() const =0
virtual ~ITreeStructure()=default
virtual bool HasRootNode() const
virtual bool HasCycles() const =0
virtual size_t GetMaxDepth() const =0
virtual size_t GetNodeCount() const =0
virtual const String & GetDescription() const =0
virtual ITreeNode * FindNodeById(size_t id) const =0
virtual ITreeNode * GetRootNode() const =0
virtual void TraverseNodes(std::function< void(const ITreeNode *)> visitor) const =0
virtual std::vector< ITreeNode * > GetAllNodes()=0
virtual String GetTreeStructure() const =0
Main types header for EmberCore.
std::string String
Framework-agnostic string type.
Definition String.h:14