13 class FolderFileIteratorItem :
public FilesIteratorItem
16 const std::string path;
19 FolderFileIteratorItem(std::string path) : FilesIteratorItem(std::filesystem::path(path).stem().
string() + std::filesystem::path(path).extension().
string()), path(path) {}
20 FolderFileIteratorItem(std::string path, std::string name) : FilesIteratorItem(name), path(path) {}
21 ~FolderFileIteratorItem() {}
23 std::vector<uint8_t> getPayload()
25 std::vector<uint8_t> v;
26 std::ifstream input_file(path, std::ios::binary);
27 input_file.seekg(0, std::ios::end);
28 const size_t fsize = input_file.tellg();
30 input_file.seekg(0, std::ios::beg);
31 input_file.read((
char *)&v[0], fsize);
40 const std::string folder;
41 std::filesystem::recursive_directory_iterator filesIterator;
42 std::error_code iteratorError;
45 FolderFilesIterator(std::string folder) : folder(folder) { filesIterator = std::filesystem::recursive_directory_iterator(folder); }
46 ~FolderFilesIterator() {}
48 bool getNext(std::shared_ptr<FilesIteratorItem> &v)
50 bool vv = filesIterator != std::filesystem::recursive_directory_iterator();
55 std::string path = filesIterator->path().string();
57 if (std::filesystem::is_regular_file(path))
58 v = std::make_unique<FolderFileIteratorItem>(path, std::filesystem::path(path).stem().
string() + std::filesystem::path(path).extension().
string());
60 filesIterator.increment(iteratorError);
62 throw satdump_exception(iteratorError.message());
68 void reset() { filesIterator = std::filesystem::recursive_directory_iterator(folder); }