9 di::Expected<DirectoryEntry, di::GenericCode>, i64>
18 result.m_stack.push(di::move(base));
19 result.m_recursion_pending =
true;
38 constexpr auto depth() const ->
i32 {
return static_cast<i32>(m_stack.size()) - 1; }
42 auto& top = *m_stack.top();
47 auto const& current = **top;
52 auto is_directory_result = current.is_non_symlink_directory();
53 if (!is_directory_result) {
59 if (*is_directory_result) {
68 m_stack.push(*di::move(new_iterator));
85 if (!m_stack.empty()) {
86 auto& top = *m_stack.top();
101 return a.m_stack.empty() && b.m_stack.empty();
106 bool m_recursion_pending {
false };
Definition expected_forward_declaration.h:8
Definition unexpected.h:14
Definition directory_entry.h:13
Definition directory_iterator.h:16
static auto create(di::Path path, DirectoryOptions options=DirectoryOptions::None) -> di::Expected< DirectoryIterator, di::GenericCode >
Definition directory_iterator.cpp:16
auto end() const -> RecursiveDirectoryIterator
Definition recursive_directory_iterator.h:35
constexpr void disable_recursion_pending()
Definition recursive_directory_iterator.h:95
constexpr auto recursion_pending() const -> bool
Definition recursive_directory_iterator.h:39
auto begin() -> RecursiveDirectoryIterator
Definition recursive_directory_iterator.h:34
constexpr friend auto operator==(RecursiveDirectoryIterator const &a, RecursiveDirectoryIterator const &b) -> bool
Definition recursive_directory_iterator.h:100
RecursiveDirectoryIterator(RecursiveDirectoryIterator &&)=default
auto operator=(RecursiveDirectoryIterator &&) -> RecursiveDirectoryIterator &=default
void advance_one()
Definition recursive_directory_iterator.h:41
auto operator*() const -> di::Expected< DirectoryEntry const &, di::GenericCode >
Definition recursive_directory_iterator.h:32
auto operator=(RecursiveDirectoryIterator const &) -> RecursiveDirectoryIterator &=delete
RecursiveDirectoryIterator(RecursiveDirectoryIterator const &)=delete
constexpr auto depth() const -> i32
Definition recursive_directory_iterator.h:38
static auto create(di::Path path, DirectoryOptions options=DirectoryOptions::None) -> di::Result< RecursiveDirectoryIterator >
Definition recursive_directory_iterator.h:13
RecursiveDirectoryIterator()=default
constexpr auto options() const -> DirectoryOptions
Definition recursive_directory_iterator.h:37
void pop()
Definition recursive_directory_iterator.h:81
#define DI_TRY(...)
Definition monad_try.h:13
PathImpl< TransparentString > Path
Definition path.h:10
__INT32_TYPE__ i32
Definition integers.h:16
Expected< T, Error > Result
Definition result.h:8
StatusCode< platform::GenericDomain > GenericCode
Definition status_code_forward_declaration.h:13
Definition zstring_parser.h:9
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
Definition directory_entry.h:11
DirectoryOptions
Definition directory_options.h:6
@ None
Definition directory_options.h:7
Definition iterator_base.h:14