1 #pragma once
2 
3 #include <QThread>
4 #include <memory>
5 
6 #include "merging/merge_result.hh"
7 
8 namespace cpprofiler
9 {
10 
11 namespace tree
12 {
13 class NodeTree;
14 }
15 
16 class Execution;
17 } // namespace cpprofiler
18 
19 namespace cpprofiler
20 {
21 namespace analysis
22 {
23 
24 struct OriginalLoc;
25 
26 class TreeMerger : public QThread
27 {
28 
29   const Execution &ex_l;
30   const Execution &ex_r;
31 
32   const tree::NodeTree &tree_l;
33   const tree::NodeTree &tree_r;
34 
35   std::shared_ptr<tree::NodeTree> res_tree;
36   std::shared_ptr<MergeResult> merge_result;
37 
38   std::shared_ptr<std::vector<OriginalLoc>> orig_locs_;
39 
40 protected:
41   void
42   run() override;
43 
44 public:
45   TreeMerger(const Execution &ex_l,
46              const Execution &ex_r,
47              std::shared_ptr<tree::NodeTree> tree,
48              std::shared_ptr<analysis::MergeResult> res,
49              std::shared_ptr<std::vector<OriginalLoc>> orig_locs);
50   ~TreeMerger();
51 };
52 
53 } // namespace analysis
54 } // namespace cpprofiler