aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include/__filesystem/recursive_directory_iterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include/__filesystem/recursive_directory_iterator.h')
-rw-r--r--libcxx/include/__filesystem/recursive_directory_iterator.h62
1 files changed, 30 insertions, 32 deletions
diff --git a/libcxx/include/__filesystem/recursive_directory_iterator.h b/libcxx/include/__filesystem/recursive_directory_iterator.h
index b20d201f5836..c38d58e50215 100644
--- a/libcxx/include/__filesystem/recursive_directory_iterator.h
+++ b/libcxx/include/__filesystem/recursive_directory_iterator.h
@@ -15,22 +15,24 @@
#include <__filesystem/directory_entry.h>
#include <__filesystem/directory_options.h>
#include <__filesystem/path.h>
+#include <__iterator/default_sentinel.h>
#include <__iterator/iterator_traits.h>
#include <__memory/shared_ptr.h>
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/enable_view.h>
+#include <__system_error/error_code.h>
+#include <__utility/move.h>
#include <cstddef>
-#include <system_error>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
-#ifndef _LIBCPP_CXX03_LANG
+#if !defined(_LIBCPP_CXX03_LANG) && !defined(_LIBCPP_HAS_NO_FILESYSTEM)
_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
-_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH
+_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_PUSH
class recursive_directory_iterator {
public:
@@ -59,10 +61,10 @@ public:
recursive_directory_iterator(const path& __p, error_code& __ec)
: recursive_directory_iterator(__p, directory_options::none, &__ec) {}
- recursive_directory_iterator(const recursive_directory_iterator&) = default;
- recursive_directory_iterator(recursive_directory_iterator&&) = default;
+ _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const recursive_directory_iterator&) = default;
+ _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(recursive_directory_iterator&&) = default;
- recursive_directory_iterator&
+ _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator&
operator=(const recursive_directory_iterator&) = default;
_LIBCPP_INLINE_VISIBILITY
@@ -76,7 +78,7 @@ public:
return *this;
}
- ~recursive_directory_iterator() = default;
+ _LIBCPP_HIDE_FROM_ABI ~recursive_directory_iterator() = default;
_LIBCPP_INLINE_VISIBILITY
const directory_entry& operator*() const { return __dereference(); }
@@ -84,7 +86,7 @@ public:
_LIBCPP_INLINE_VISIBILITY
const directory_entry* operator->() const { return &__dereference(); }
- recursive_directory_iterator& operator++() { return __increment(); }
+ _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator++() { return __increment(); }
_LIBCPP_INLINE_VISIBILITY
__dir_element_proxy operator++(int) {
@@ -98,8 +100,8 @@ public:
return __increment(&__ec);
}
- _LIBCPP_FUNC_VIS directory_options options() const;
- _LIBCPP_FUNC_VIS int depth() const;
+ _LIBCPP_EXPORTED_FROM_ABI directory_options options() const;
+ _LIBCPP_EXPORTED_FROM_ABI int depth() const;
_LIBCPP_INLINE_VISIBILITY
void pop() { __pop(); }
@@ -113,25 +115,21 @@ public:
_LIBCPP_INLINE_VISIBILITY
void disable_recursion_pending() { __rec_ = false; }
-private:
- _LIBCPP_FUNC_VIS
- recursive_directory_iterator(const path& __p, directory_options __opt,
- error_code* __ec);
-
- _LIBCPP_FUNC_VIS
- const directory_entry& __dereference() const;
+# if _LIBCPP_STD_VER >= 20
- _LIBCPP_FUNC_VIS
- bool __try_recursion(error_code* __ec);
-
- _LIBCPP_FUNC_VIS
- void __advance(error_code* __ec = nullptr);
+ _LIBCPP_HIDE_FROM_ABI bool operator==(default_sentinel_t) const noexcept {
+ return *this == recursive_directory_iterator();
+ }
- _LIBCPP_FUNC_VIS
- recursive_directory_iterator& __increment(error_code* __ec = nullptr);
+# endif
- _LIBCPP_FUNC_VIS
- void __pop(error_code* __ec = nullptr);
+private:
+ _LIBCPP_EXPORTED_FROM_ABI recursive_directory_iterator(const path& __p, directory_options __opt, error_code* __ec);
+ _LIBCPP_EXPORTED_FROM_ABI const directory_entry& __dereference() const;
+ _LIBCPP_EXPORTED_FROM_ABI bool __try_recursion(error_code* __ec);
+ _LIBCPP_EXPORTED_FROM_ABI void __advance(error_code* __ec = nullptr);
+ _LIBCPP_EXPORTED_FROM_ABI recursive_directory_iterator& __increment(error_code* __ec = nullptr);
+ _LIBCPP_EXPORTED_FROM_ABI void __pop(error_code* __ec = nullptr);
inline _LIBCPP_INLINE_VISIBILITY friend bool
operator==(const recursive_directory_iterator&,
@@ -164,22 +162,22 @@ end(recursive_directory_iterator) noexcept {
return recursive_directory_iterator();
}
-_LIBCPP_AVAILABILITY_FILESYSTEM_POP
+_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY_POP
_LIBCPP_END_NAMESPACE_FILESYSTEM
-#if _LIBCPP_STD_VER > 17
+#if _LIBCPP_STD_VER >= 20
template <>
-_LIBCPP_AVAILABILITY_FILESYSTEM
+_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY
inline constexpr bool _VSTD::ranges::enable_borrowed_range<_VSTD_FS::recursive_directory_iterator> = true;
template <>
-_LIBCPP_AVAILABILITY_FILESYSTEM
+_LIBCPP_AVAILABILITY_FILESYSTEM_LIBRARY
inline constexpr bool _VSTD::ranges::enable_view<_VSTD_FS::recursive_directory_iterator> = true;
-#endif // _LIBCPP_STD_VER > 17
+#endif // _LIBCPP_STD_VER >= 20
-#endif // _LIBCPP_CXX03_LANG
+#endif // !defined(_LIBCPP_CXX03_LANG) && !defined(_LIBCPP_HAS_NO_FILESYSTEM)
#endif // _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H