3#include "di/container/path/prelude.h"
4#include "di/util/prelude.h"
5#include "di/vocab/error/prelude.h"
13 :
public di::container::IteratorBase<DirectoryIterator, di::InputIteratorTag,
14 di::Expected<DirectoryEntry, di::GenericCode>, i64>
15 ,
public di::meta::EnableBorrowedContainer<DirectoryIterator>
16 ,
public di::meta::EnableView<DirectoryIterator> {
21 -> di::Expected<DirectoryIterator, di::GenericCode>;
32 return m_current.transform([](
auto const& value) {
33 return di::cref(value);
46 : m_path(
di::move(path))
47 , m_buffer(
di::move(buffer))
48 , m_directory_handle(
di::move(directory_handle))
52 return a.m_at_end == b.m_at_end;
56 di::Vector<di::Byte> m_buffer;
58 di::Expected<DirectoryEntry, di::GenericCode> m_current { di::unexpect, PosixError::Success };
59 usize m_current_offset { 0 };
60 bool m_at_end {
true };
Definition sync_file.h:40
Definition directory_entry.h:13
Definition directory_iterator.h:24
auto operator*() const -> di::Expected< DirectoryEntry const &, di::GenericCode >
Definition directory_iterator.h:31
auto operator=(DirectoryIterator const &) -> DirectoryIterator &=delete
auto operator=(DirectoryIterator &&) -> DirectoryIterator &=default
auto begin() -> DirectoryIterator
Definition directory_iterator.h:37
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:51
auto end() const -> DirectoryIterator
Definition directory_iterator.h:38
Definition directory_entry.h:11
DirectoryOptions
Definition directory_options.h:6
@ None
Definition directory_options.h:7