3#include "di/container/path/prelude.h"
4#include "di/util/prelude.h"
5#include "di/vocab/error/prelude.h"
17 using Dir = di::Box<::DIR, DirDeleter>;
21 :
public di::container::IteratorBase<DirectoryIterator, di::InputIteratorTag,
22 di::Expected<DirectoryEntry, di::GenericCode>, i64>
23 ,
public di::meta::EnableBorrowedContainer<DirectoryIterator>
24 ,
public di::meta::EnableView<DirectoryIterator> {
29 -> di::Expected<DirectoryIterator, di::GenericCode>;
40 return m_current.transform([](
auto const& value) {
41 return di::cref(value);
54 : m_path(
di::move(path)), m_dir(
di::move(dir)), m_at_end(false) {}
57 return a.m_at_end == b.m_at_end;
61 di::Expected<DirectoryEntry, di::GenericCode> m_current { di::unexpect, PosixError::Success };
63 bool m_at_end {
true };
Definition directory_entry.h:13
auto operator*() const -> di::Expected< DirectoryEntry const &, di::GenericCode >
Definition directory_iterator.h:39
auto operator=(DirectoryIterator const &) -> DirectoryIterator &=delete
auto operator=(DirectoryIterator &&) -> DirectoryIterator &=default
auto begin() -> DirectoryIterator
Definition directory_iterator.h:45
friend class RecursiveDirectoryIterator
Definition directory_iterator.h:25
DirectoryIterator(DirectoryIterator &&)=default
DirectoryIterator()=default
static auto create(di::Path path, DirectoryOptions options=DirectoryOptions::None) -> di::Expected< DirectoryIterator, di::GenericCode >
DirectoryIterator(DirectoryIterator const &)=delete
constexpr friend auto operator==(DirectoryIterator const &a, DirectoryIterator const &b) -> bool
Definition directory_iterator.h:56
auto end() const -> DirectoryIterator
Definition directory_iterator.h:46
Definition operations.h:6
di::Box<::DIR, DirDeleter > Dir
Definition directory_iterator.h:17
Definition directory_entry.h:11
DirectoryOptions
Definition directory_options.h:6
@ None
Definition directory_options.h:7
Definition directory_iterator.h:13
static void operator()(DIR *dir)