34 lines
837 B
C
34 lines
837 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 BOARD_ESP8266
|
||
|
Dir dir;
|
||
|
#endif
|
||
|
#ifdef BOARD_ESP32
|
||
|
File dir;
|
||
|
#endif
|
||
|
};
|