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