8Utils::COLOR CounterDuplicationCodeTrie::choose_text_color() {
9 number_printed_lines++;
11 if (number_printed_lines % 2 == 0) {
17int CounterDuplicationCodeTrie::create_node_at_the_end() {
19 std::map<std::string, int> aux;
21 counter_duplication_lines.push_back(ZERO_INITIAL_COUNTER);
25void CounterDuplicationCodeTrie::create_edge_if_not_exist(
int node,
const std::string& folder) {
26 if (trie[node].find(folder) == trie[node].end()) {
27 trie[node][folder] = create_node_at_the_end();
31std::string CounterDuplicationCodeTrie::create_context_string_on_depth(
int depth) {
33 for (
int i = 0; i < depth; i++) {
34 ret += BASIC_SHIFT_PER_DEPTH;
40void CounterDuplicationCodeTrie::print_node_information(
int node,
int depth,
const std::string& folder) {
41 std::string line = create_context_string_on_depth(depth) + folder + TWO_POINTER_AFTER_FOLDER;
42 line += std::to_string(counter_duplication_lines[node]) + LINE_TEXT;
47void CounterDuplicationCodeTrie::dfs_print_duplication_code_trie(
int current_node,
int depth,
const std::string& folder) {
48 print_node_information(current_node, depth, folder);
49 for (
auto [child_folder, child_node] : trie[current_node]) {
50 int child_depth = depth + 1;
51 dfs_print_duplication_code_trie(child_node, child_depth, child_folder);
56 int current_node = ROOT_NODE;
57 counter_duplication_lines[current_node] += number_of_duplication_lines;
58 for (
const auto& folder : folder_path) {
59 create_edge_if_not_exist(current_node, folder);
60 current_node = trie[current_node][folder];
61 counter_duplication_lines[current_node] += number_of_duplication_lines;
66 dfs_print_duplication_code_trie(ROOT_NODE, BASE_DEPTH, EMPTY_FOLDER);
70 create_node_at_the_end();
void add_folder_duplication_code(const std::vector< std::string > &folder_path, int number_of_duplication_lines)
Adds duplication count for a folder path.
CounterDuplicationCodeTrie()
Constructs a new trie with root node.
void print_duplication_code_trie()
Prints the trie structure with duplication counts.
Trie-based code duplication counter.
COLOR
Enumeration of available colors for formatted messages.