3#include "di/container/path/prelude.h"
4#include "di/function/prelude.h"
5#include "di/util/prelude.h"
6#include "di/vocab/error/prelude.h"
8#include "dius/filesystem/file_type.h"
21 constexpr auto path() const& ->
di::Path const& {
return m_path; }
22 constexpr auto path() && -> di::Path&& {
return di::move(m_path); }
26 constexpr operator di::Path
const&()
const& {
return path(); }
27 constexpr operator di::Path&&() && {
return di::move(*this).path(); }
28 constexpr operator di::PathView()
const {
return path_view(); }
31 if (has_cached_type()) {
38 if (has_cached_type()) {
45 if (has_cached_type()) {
52 if (has_cached_type()) {
59 if (has_cached_type()) {
66 if (has_cached_type()) {
73 if (has_cached_type()) {
80 if (has_cached_type()) {
104 return a.path_view() == b.path_view();
107 return a.path_view() <=> b.path_view();
111 : m_path(
di::move(
path)), m_cached_type(cached_type) {}
113 auto is_non_symlink_directory() const ->
di::Expected<
bool,
di::GenericCode> {
119 return di::Expected<bool, di::GenericCode>(
is_directory());
122 constexpr auto has_cached_type() const ->
bool {
129 template<di::concepts::Encoding Enc>
130 constexpr friend auto tag_invoke(di::Tag<di::formatter_in_place>, di::InPlaceType<DirectoryEntry>,
131 di::FormatParseContext<Enc>& context) {
132 return di::format::formatter<di::PathView, Enc>(context) % [](di::concepts::CopyConstructible
auto formatter) {
133 return [=](di::FormatContext
auto& context,
DirectoryEntry const& a) {
134 return formatter(context, a.path_view());
auto is_directory() const -> di::Result< bool >
Definition directory_entry.h:51
auto is_regular_file() const -> di::Result< bool >
Definition directory_entry.h:72
constexpr friend auto operator==(DirectoryEntry const &a, DirectoryEntry const &b) -> bool
Definition directory_entry.h:103
auto file_size() const -> di::Result< umax >
Definition directory_entry.h:93
auto is_block_file() const -> di::Result< bool >
Definition directory_entry.h:37
auto is_fifo() const -> di::Result< bool >
Definition directory_entry.h:58
auto operator=(DirectoryEntry &&) -> DirectoryEntry &=default
constexpr operator di::PathView() const
Definition directory_entry.h:28
constexpr friend auto operator<=>(DirectoryEntry const &a, DirectoryEntry const &b) -> di::strong_ordering
Definition directory_entry.h:106
DirectoryEntry(DirectoryEntry &&)=default
auto is_other() const -> di::Result< bool >
Definition directory_entry.h:65
constexpr auto path() const &-> di::Path const &
Definition directory_entry.h:21
auto exists() const -> di::Result< bool >
Definition directory_entry.h:30
friend class RecursiveDirectoryIterator
Definition directory_entry.h:101
auto status() const -> di::Result< FileStatus >
Definition directory_entry.h:96
constexpr auto path_view() const -> di::PathView
Definition directory_entry.h:23
auto is_character_file() const -> di::Result< bool >
Definition directory_entry.h:44
auto hard_link_count() const -> di::Result< umax >
Definition directory_entry.h:94
constexpr friend auto tag_invoke(di::Tag< di::formatter_in_place >, di::InPlaceType< DirectoryEntry >, di::FormatParseContext< Enc > &context)
Definition directory_entry.h:130
auto is_socket() const -> di::Result< bool >
Definition directory_entry.h:79
friend class DirectoryIterator
Definition directory_entry.h:100
constexpr auto path() &&-> di::Path &&
Definition directory_entry.h:22
auto is_symlink() const -> di::Result< bool >
Definition directory_entry.h:86
constexpr auto filename() const -> di::Optional< di::PathView >
Definition directory_entry.h:24
auto symlink_status() const -> di::Result< FileStatus >
Definition directory_entry.h:97
Definition file_status.h:7
Definition directory_entry.h:11
constexpr auto file_size
Definition file_size.h:13
constexpr auto is_socket
Definition is_socket.h:14
constexpr auto is_directory
Definition is_directory.h:14
constexpr auto is_symlink
Definition is_symlink.h:14
constexpr auto is_block_file
Definition is_block_file.h:14
FileType
Definition file_type.h:7
@ Symlink
Definition file_type.h:15
@ None
Definition file_type.h:10
@ Unknown
Definition file_type.h:20
@ Directory
Definition file_type.h:14
constexpr auto is_other
Definition is_other.h:20
constexpr auto symlink_status
Definition symlink_status.h:14
constexpr auto is_character_file
Definition is_character_file.h:14
constexpr auto status
Definition status.h:14
constexpr auto is_fifo
Definition is_fifo.h:14
constexpr auto hard_link_count
Definition hard_link_count.h:13
constexpr auto exists
Definition exists.h:17
constexpr auto is_regular_file
Definition is_regular_file.h:14