34 lines
825 B
C++
34 lines
825 B
C++
#pragma once
|
|
#include <iterator>
|
|
|
|
#include <LittleFS.h>
|
|
|
|
struct filename_iterator: public std::iterator<std::input_iterator_tag, const char*> {
|
|
public:
|
|
filename_iterator();
|
|
filename_iterator(const char* path, const char* suffix);
|
|
void next();
|
|
filename_iterator& operator++();
|
|
filename_iterator& operator++(int) {filename_iterator ret = *this; ++(*this); return ret;}
|
|
bool operator==(const filename_iterator &other) const { return valid == other.valid;}
|
|
bool operator!=(const filename_iterator &other) const { return !(*this == other); }
|
|
const char* operator*() const {
|
|
if (!valid) {
|
|
return NULL;
|
|
}
|
|
return ret.c_str();
|
|
}
|
|
|
|
private:
|
|
String ret;
|
|
bool valid;
|
|
const char* suffix;
|
|
|
|
#ifdef ESP8266
|
|
Dir dir;
|
|
#endif
|
|
#ifdef ESP32
|
|
File dir;
|
|
#endif
|
|
};
|