#include <iostream>
#include <vector>
#include <string>
#include <functional>
void find_files(
const std::string& absolute_path,
const std::function<bool(const std::string& filename)> predicate,
std::vector<std::string>& out_files);
int main() {
std::cout << "Hello World!" << std::endl;
auto is_needle_extension = [](const std::string& filename, const std::vector<std::string>& needle_extensions) -> bool {
return false;
};
std::vector<std::string> headers;
find_files("root_folder", [&](const std::string& filename) {
return is_needle_extension(filename, {".h", ".hpp"});
}, headers);
auto is_needle = [](const std::string& filename) -> bool { return true; };
find_files("root_folder", is_needle, headers);
using std::placeholders::_1;
//find_files("root_folder", std::bind(is_needle_extension, _1, {".h", ".hpp"}), headers);
return 0;
}
void find_files(
const std::string& absolute_path,
const std::function<bool(const std::string& filename)> predicate,
std::vector<std::string>& out_files) {
const std::string filename = "1.txt";
if (predicate(filename)) {
out_files.emplace_back(filename);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCnZvaWQgZmluZF9maWxlcygKICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNvbHV0ZV9wYXRoLAogICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSk+IHByZWRpY2F0ZSwKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgb3V0X2ZpbGVzKTsKCgppbnQgbWFpbigpIHsKICBzdGQ6OmNvdXQgPDwgIkhlbGxvIFdvcmxkISIgPDwgc3RkOjplbmRsOwogIGF1dG8gaXNfbmVlZGxlX2V4dGVuc2lvbiA9IFtdKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZWVkbGVfZXh0ZW5zaW9ucykgLT4gYm9vbCB7CiAgIHJldHVybiBmYWxzZTsKICB9OwoKICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gaGVhZGVyczsKICBmaW5kX2ZpbGVzKCJyb290X2ZvbGRlciIsIFsmXShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKICAgIHJldHVybiBpc19uZWVkbGVfZXh0ZW5zaW9uKGZpbGVuYW1lLCB7Ii5oIiwgIi5ocHAifSk7CiAgfSwgaGVhZGVycyk7CgogIGF1dG8gaXNfbmVlZGxlID0gW10oY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSAtPiBib29sIHsgcmV0dXJuIHRydWU7IH07CiAgZmluZF9maWxlcygicm9vdF9mb2xkZXIiLCBpc19uZWVkbGUsIGhlYWRlcnMpOwoKCiAgdXNpbmcgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xOwogIC8vZmluZF9maWxlcygicm9vdF9mb2xkZXIiLCBzdGQ6OmJpbmQoaXNfbmVlZGxlX2V4dGVuc2lvbiwgXzEsIHsiLmgiLCAiLmhwcCJ9KSwgaGVhZGVycyk7CgoKCiAgcmV0dXJuIDA7Cn0KCnZvaWQgZmluZF9maWxlcygKICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNvbHV0ZV9wYXRoLAogICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSk+IHByZWRpY2F0ZSwKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgb3V0X2ZpbGVzKSB7CgogIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gIjEudHh0IjsKICBpZiAocHJlZGljYXRlKGZpbGVuYW1lKSkgewogICAgb3V0X2ZpbGVzLmVtcGxhY2VfYmFjayhmaWxlbmFtZSk7CiAgfQp9Cg==