DBC Framework
DBC parsing and CAN signal decoding framework
tree_node.h
Go to the documentation of this file.
1
12#ifndef TREE_NODE_H
13#define TREE_NODE_H
14
15#include <string>
16#include <vector>
17#include <memory>
18#include <cstddef>
19
20#include "frame_info.h"
21#include "signal_info.h"
22
26enum class NodeType {
27 Root,
28 Frame,
29 Signal
30};
31
35class TreeNode {
36 public:
40 TreeNode();
41
46 explicit TreeNode (const FrameInfo &frame);
47
52 explicit TreeNode (const SignalInfo &signal);
53
54 ~TreeNode() = default;
55
56 TreeNode (const TreeNode &) = delete;
57 TreeNode &operator= (const TreeNode &) = delete;
58
59 TreeNode (TreeNode &&) = default;
60 TreeNode &operator= (TreeNode &&) = default;
61
66 void AddChild (std::unique_ptr<TreeNode> child);
67
72 std::size_t GetChildCount() const;
73
79 const TreeNode *GetChild (std::size_t index) const;
80
86 TreeNode *GetChild (std::size_t index);
87
92 NodeType GetType() const;
93
98 const std::string &GetName() const;
99
104 const FrameInfo *GetFrame() const;
105
110 const SignalInfo *GetSignal() const;
111
112 private:
113 NodeType m_type;
114 std::string m_name;
115 std::vector<std::unique_ptr<TreeNode> > m_children;
116 std::unique_ptr<FrameInfo> m_frame;
117 std::unique_ptr<SignalInfo> m_signal;
118};
119
120#endif /* TREE_NODE_H */
Tree node for later use in model/view or other hierarchy consumers.
Definition: tree_node.h:35
const SignalInfo * GetSignal() const
Get signal payload if node is signal.
Definition: tree_node.cpp:73
const TreeNode * GetChild(std::size_t index) const
Get child by index.
Definition: tree_node.cpp:47
void AddChild(std::unique_ptr< TreeNode > child)
Add child node.
Definition: tree_node.cpp:38
TreeNode()
Create root node.
Definition: tree_node.cpp:14
const std::string & GetName() const
Get display name.
Definition: tree_node.cpp:65
std::size_t GetChildCount() const
Get child count.
Definition: tree_node.cpp:43
NodeType GetType() const
Get node type.
Definition: tree_node.cpp:61
const FrameInfo * GetFrame() const
Get frame payload if node is frame.
Definition: tree_node.cpp:69
Created: 2026-03-13 Author: Deeaitch (Dim. Himro)
Created: 2026-03-13 Author: Deeaitch (Dim. Himro)
Describes one CAN frame from a DBC file.
Definition: frame_info.h:24
Describes one signal inside a DBC frame.
Definition: signal_info.h:22
NodeType
Type of a tree node.
Definition: tree_node.h:26