parent
1371a8820c
commit
e0b773c6a7
2 changed files with 111 additions and 108 deletions
@ -1,82 +1,84 @@ |
||||
#include "dir_entry.h" |
||||
|
||||
namespace Bk::Tools { |
||||
std::string DirEntry::path() |
||||
{ |
||||
return ent.path().string(); |
||||
} |
||||
namespace Bk { |
||||
namespace Tools { |
||||
std::string DirEntry::path() |
||||
{ |
||||
return ent.path().string(); |
||||
} |
||||
|
||||
std::string DirEntry::absolute_path() |
||||
{ |
||||
return std::filesystem::absolute(ent.path()); |
||||
} |
||||
std::string DirEntry::absolute_path() |
||||
{ |
||||
return std::filesystem::absolute(ent.path()); |
||||
} |
||||
|
||||
std::string DirEntry::relative_path() |
||||
{ |
||||
return ent.path().relative_path().string(); |
||||
} |
||||
std::string DirEntry::relative_path() |
||||
{ |
||||
return ent.path().relative_path().string(); |
||||
} |
||||
|
||||
std::string DirEntry::name() |
||||
{ |
||||
return ent.path().filename(); |
||||
} |
||||
std::string DirEntry::name() |
||||
{ |
||||
return ent.path().filename(); |
||||
} |
||||
|
||||
uintmax_t DirEntry::size() |
||||
{ |
||||
return ent.file_size(); |
||||
} |
||||
uintmax_t DirEntry::size() |
||||
{ |
||||
return ent.file_size(); |
||||
} |
||||
|
||||
TimePoint<FileClock, Second> DirEntry::last_write() |
||||
{ |
||||
return TimePoint<FileClock, Second>(ent.last_write_time()); |
||||
} |
||||
TimePoint<FileClock, Second> DirEntry::last_write() |
||||
{ |
||||
return TimePoint<FileClock, Second>(ent.last_write_time()); |
||||
} |
||||
|
||||
bool DirEntry::exists() |
||||
{ |
||||
return ent.exists(); |
||||
} |
||||
bool DirEntry::exists() |
||||
{ |
||||
return ent.exists(); |
||||
} |
||||
|
||||
bool DirEntry::is(FileType type) |
||||
{ |
||||
return this->type() == type; |
||||
} |
||||
bool DirEntry::is(FileType type) |
||||
{ |
||||
return this->type() == type; |
||||
} |
||||
|
||||
FileType DirEntry::type() |
||||
{ |
||||
return ent.status().type(); |
||||
} |
||||
FileType DirEntry::type() |
||||
{ |
||||
return ent.status().type(); |
||||
} |
||||
|
||||
FilePerms DirEntry::perms() |
||||
{ |
||||
return ent.status().permissions(); |
||||
} |
||||
FilePerms DirEntry::perms() |
||||
{ |
||||
return ent.status().permissions(); |
||||
} |
||||
|
||||
uintmax_t DirEntry::hard_links() |
||||
{ |
||||
return ent.hard_link_count(); |
||||
} |
||||
uintmax_t DirEntry::hard_links() |
||||
{ |
||||
return ent.hard_link_count(); |
||||
} |
||||
|
||||
bool DirEntry::move(std::string name) |
||||
{ |
||||
std::filesystem::directory_entry new_path(ent.path().parent_path()/name); |
||||
if (exists() && new_path.exists())
|
||||
bool DirEntry::move(std::string name) |
||||
{ |
||||
std::filesystem::rename(ent.path(), new_path.path()/name()); |
||||
ent = std::filesystem::directory_entry(new_path.path()); |
||||
return true; |
||||
std::filesystem::directory_entry new_path(ent.path().parent_path()/name); |
||||
if (exists() && new_path.exists())
|
||||
{ |
||||
std::filesystem::rename(ent.path(), new_path.path()/name()); |
||||
ent = std::filesystem::directory_entry(new_path.path()); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
bool DirEntry::rename(std::string name) |
||||
{ |
||||
if (exists())
|
||||
bool DirEntry::rename(std::string name) |
||||
{ |
||||
std::filesystem::path new_path = ent.path().parent_path()/name; |
||||
std::filesystem::rename(ent.path(), new_path); |
||||
ent = std::filesystem::directory_entry(new_path); |
||||
return true; |
||||
if (exists())
|
||||
{ |
||||
std::filesystem::path new_path = ent.path().parent_path()/name; |
||||
std::filesystem::rename(ent.path(), new_path); |
||||
ent = std::filesystem::directory_entry(new_path); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
return false; |
||||
} |
||||
} |
@ -1,54 +1,55 @@ |
||||
#pragma once |
||||
|
||||
|
||||
#include <bakatoolspch.h> |
||||
#include <bakatools/time/time.h> |
||||
|
||||
#define BK_DIR_ENTRY_TYPE(type) const char* type_name() override { return BK_STRINGIFY(type); }\ |
||||
static FileType get_type() { return FileType::type; }\
|
||||
namespace Bk::Tools { |
||||
using FileType = std::filesystem::file_type; |
||||
using FilePerms = std::filesystem::perms; |
||||
using FileStatus = std::filesystem::file_status; |
||||
using CopyOption = std::filesystem::copy_options; |
||||
|
||||
class DirEntry
|
||||
{ |
||||
public: |
||||
DirEntry(std::string path) |
||||
{ |
||||
std::filesystem::path p(path); |
||||
ent = std::filesystem::directory_entry(p); |
||||
} |
||||
|
||||
DirEntry(std::filesystem::directory_entry ent) |
||||
: ent(ent) {} |
||||
|
||||
virtual ~DirEntry() {} |
||||
|
||||
std::string path(); |
||||
std::string absolute_path(); |
||||
std::string relative_path(); |
||||
std::string name(); |
||||
|
||||
uintmax_t size(); |
||||
TimePoint<FileClock, Second> last_write(); |
||||
bool exists(); |
||||
FilePerms perms(); |
||||
uintmax_t hard_links(); |
||||
|
||||
bool move(std::string path); |
||||
bool rename(std::string name); |
||||
virtual int remove() { return (int)false; } |
||||
virtual void copy(std::string path, CopyOption opt) {} |
||||
|
||||
|
||||
virtual const char* type_name() { return "dir_entry"; } |
||||
FileType type(); |
||||
bool is(FileType type); |
||||
static FileType get_type() { return FileType::unknown; } |
||||
|
||||
protected: |
||||
std::filesystem::directory_entry ent; |
||||
}; |
||||
namespace Bk { |
||||
namespace Tools { |
||||
using FileType = std::filesystem::file_type; |
||||
using FilePerms = std::filesystem::perms; |
||||
using FileStatus = std::filesystem::file_status; |
||||
using CopyOption = std::filesystem::copy_options; |
||||
|
||||
class DirEntry
|
||||
{ |
||||
public: |
||||
DirEntry(std::string path) |
||||
{ |
||||
std::filesystem::path p(path); |
||||
ent = std::filesystem::directory_entry(p); |
||||
} |
||||
|
||||
DirEntry(std::filesystem::directory_entry ent) |
||||
: ent(ent) {} |
||||
|
||||
virtual ~DirEntry() {} |
||||
|
||||
std::string path(); |
||||
std::string absolute_path(); |
||||
std::string relative_path(); |
||||
std::string name(); |
||||
|
||||
uintmax_t size(); |
||||
TimePoint<FileClock, Second> last_write(); |
||||
bool exists(); |
||||
FilePerms perms(); |
||||
uintmax_t hard_links(); |
||||
|
||||
bool move(std::string path); |
||||
bool rename(std::string name); |
||||
virtual int remove() { return (int)false; } |
||||
virtual void copy(std::string path, CopyOption opt) {} |
||||
|
||||
|
||||
virtual const char* type_name() { return "dir_entry"; } |
||||
FileType type(); |
||||
bool is(FileType type); |
||||
static FileType get_type() { return FileType::unknown; } |
||||
|
||||
protected: |
||||
std::filesystem::directory_entry ent; |
||||
}; |
||||
} |
||||
} |
Loading…
Reference in New Issue