| 62 | |
| 63 | /** @brief Handles directory traversal, should be used as iterator */ |
| 64 | class Directory |
| 65 | { |
| 66 | public: |
| 67 | #ifndef DOXYGEN_GENERATING_OUTPUT |
| 68 | class Proxy; |
| 69 | |
| 70 | // Iterator defines |
| 71 | using iterator_category = std::input_iterator_tag; |
| 72 | using difference_type = std::ptrdiff_t; |
| 73 | //using reference = const Containers::StringView&; |
| 74 | using value_type = Containers::StringView; |
| 75 | #endif |
| 76 | |
| 77 | Directory() noexcept; |
| 78 | Directory(Containers::StringView path, EnumerationOptions options = EnumerationOptions::None); |
| 79 | ~Directory(); |
| 80 | |
| 81 | Directory(const Directory& other); |
| 82 | Directory& operator=(const Directory& other); |
| 83 | Directory(Directory&& other) noexcept; |
| 84 | Directory& operator=(Directory&& other) noexcept; |
| 85 | |
| 86 | Containers::StringView operator*() const & noexcept; |
| 87 | Directory& operator++(); |
| 88 | Proxy operator++(int); |
| 89 | |
| 90 | bool operator==(const Directory& other) const; |
| 91 | bool operator!=(const Directory& other) const; |
| 92 | |
| 93 | Directory begin() noexcept { |
| 94 | return *this; |
| 95 | } |
| 96 | |
| 97 | Directory end() noexcept { |
| 98 | return Directory(); |
| 99 | } |
| 100 | |
| 101 | private: |
| 102 | class Impl; |
| 103 | std::shared_ptr<Impl> _impl; |
| 104 | }; |
| 105 | |
| 106 | FileSystem() = delete; |
| 107 | ~FileSystem() = delete; |