Untitled
unknown
c_cpp
2 years ago
2.2 kB
5
Indexable
#include"../headers/Algorithms.hpp" #include"../headers/Folder.hpp" #include"../headers/File.hpp" #include<execution> #include<fstream> #include <iostream> #include <vector> #include <execution> #include <unordered_set> #include<map> std::optional<FSNodes> algorithms::find_by_keyword(FSNodes & nodes, std::wstring_view keyword, const std::atomic<bool>& stop_token) //std::optional<FSNodes> algorithms::find_by_keyword(FSNodes & nodes, std::wstring_view keyword, const std::atomic<bool>& stop_token) { uint64_t integer = 0; FSNodes result; FSNodes::iterator it = nodes.begin(); auto matches = [&](const FileSystemNode& node, std::wstring_view keyword) { auto file_name = node.get_file_name(); size_t pos = file_name.find(keyword); bool result = pos != std::wstring::npos; //std::cout << result << '\n'; return result; }; std::cout << nodes.size() << " !!@#" << std::endl; auto res = std::find_if(std::execution::par_unseq, it ,nodes.end(), [&](const std::unique_ptr<FileSystemNode>& file_node) { return matches(*file_node, keyword); }); it++; auto get_copy = [&](FSNodes::const_iterator it) -> std::unique_ptr<FileSystemNode>{ if (auto res = dynamic_cast<File*>((*it).get())) return std::unique_ptr<FileSystemNode>(new File(*res, 1)); // using the second integer as the compiler confused the class for the templated path if (auto res = dynamic_cast<Folder*>((*it).get())) return std::unique_ptr<FileSystemNode>(new Folder(*res, 1)); return nullptr; }; std::wcout << keyword << " is the keyword\n"; std::ofstream log("could.txt", std::ios::trunc); // true means that the file was a path //std::map<std::wstring_view, bool> map; while (res != nodes.end() && it != nodes.end() && !stop_token) { result.emplace_back(get_copy(it)); it++; res = std::find_if(std::execution::par_unseq, it, nodes.end(), [&](const std::unique_ptr<FileSystemNode>& file_node) { return matches(*file_node, keyword); }); //map[(*res)->get_path()] = true; std::cout << result.size() << std::endl; } if (result.empty()) return std::nullopt; return result; }
Editor is loading...