1 #pragma once 2 3 #include <vector> 4 #include "../core.hh" 5 #include "subtree_pattern.hh" 6 7 namespace cpprofiler 8 { 9 10 namespace tree 11 { 12 class NodeTree; 13 class Layout; 14 } // namespace tree 15 16 namespace analysis 17 { 18 19 using Group = std::vector<NodeID>; 20 21 struct Partition 22 { 23 24 std::vector<Group> processed; 25 std::vector<Group> remaining; 26 Partitioncpprofiler::analysis::Partition27 Partition(std::vector<Group> &&proc, std::vector<Group> &&rem) 28 : processed(proc), remaining(rem) 29 { 30 } 31 }; 32 33 enum class LabelOption 34 { 35 IGNORE_LABEL, 36 VARS, 37 FULL 38 }; 39 40 struct SubtreePattern; 41 42 std::vector<SubtreePattern> runIdenticalSubtrees(const tree::NodeTree &nt); 43 44 std::vector<SubtreePattern> runSimilarShapes(const tree::NodeTree &tree, const tree::Layout &lo); 45 46 } // namespace analysis 47 48 } // namespace cpprofiler 49