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