Test namaespace

main
anulax1225 ago%!(EXTRA string=1 year)
parent e0b773c6a7
commit 08a7de3e24
  1. 124
      src/bakatools/file_system/dir_entry.cpp
  2. 90
      src/bakatools/file_system/dir_entry.h

@ -1,84 +1,82 @@
#include "dir_entry.h" #include "dir_entry.h"
namespace Bk { namespace Bk {
namespace Tools { std::string DirEntry::path()
std::string DirEntry::path() {
{ return ent.path().string();
return ent.path().string(); }
}
std::string DirEntry::absolute_path() std::string DirEntry::absolute_path()
{ {
return std::filesystem::absolute(ent.path()); return std::filesystem::absolute(ent.path());
} }
std::string DirEntry::relative_path() std::string DirEntry::relative_path()
{ {
return ent.path().relative_path().string(); return ent.path().relative_path().string();
} }
std::string DirEntry::name() std::string DirEntry::name()
{ {
return ent.path().filename(); return ent.path().filename();
} }
uintmax_t DirEntry::size() uintmax_t DirEntry::size()
{ {
return ent.file_size(); return ent.file_size();
} }
TimePoint<FileClock, Second> DirEntry::last_write() TimePoint<FileClock, Second> DirEntry::last_write()
{ {
return TimePoint<FileClock, Second>(ent.last_write_time()); return TimePoint<FileClock, Second>(ent.last_write_time());
} }
bool DirEntry::exists() bool DirEntry::exists()
{ {
return ent.exists(); return ent.exists();
} }
bool DirEntry::is(FileType type) bool DirEntry::is(FileType type)
{ {
return this->type() == type; return this->type() == type;
} }
FileType DirEntry::type() FileType DirEntry::type()
{ {
return ent.status().type(); return ent.status().type();
} }
FilePerms DirEntry::perms() FilePerms DirEntry::perms()
{ {
return ent.status().permissions(); return ent.status().permissions();
} }
uintmax_t DirEntry::hard_links() uintmax_t DirEntry::hard_links()
{ {
return ent.hard_link_count(); return ent.hard_link_count();
} }
bool DirEntry::move(std::string name) bool DirEntry::move(std::string name)
{
std::filesystem::directory_entry new_path(ent.path().parent_path()/name);
if (exists() && new_path.exists())
{ {
std::filesystem::directory_entry new_path(ent.path().parent_path()/name); std::filesystem::rename(ent.path(), new_path.path()/name());
if (exists() && new_path.exists()) ent = std::filesystem::directory_entry(new_path.path());
{ return true;
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) bool DirEntry::rename(std::string name)
{
if (exists())
{ {
if (exists()) std::filesystem::path new_path = ent.path().parent_path()/name;
{ std::filesystem::rename(ent.path(), new_path);
std::filesystem::path new_path = ent.path().parent_path()/name; ent = std::filesystem::directory_entry(new_path);
std::filesystem::rename(ent.path(), new_path); return true;
ent = std::filesystem::directory_entry(new_path);
return true;
}
return false;
} }
return false;
} }
} }

@ -6,50 +6,48 @@
#define BK_DIR_ENTRY_TYPE(type) const char* type_name() override { return BK_STRINGIFY(type); }\ #define BK_DIR_ENTRY_TYPE(type) const char* type_name() override { return BK_STRINGIFY(type); }\
static FileType get_type() { return FileType::type; }\ static FileType get_type() { return FileType::type; }\
namespace Bk { namespace Bk {
namespace Tools { using FileType = std::filesystem::file_type;
using FileType = std::filesystem::file_type; using FilePerms = std::filesystem::perms;
using FilePerms = std::filesystem::perms; using FileStatus = std::filesystem::file_status;
using FileStatus = std::filesystem::file_status; using CopyOption = std::filesystem::copy_options;
using CopyOption = std::filesystem::copy_options;
class DirEntry
class DirEntry {
{ public:
public: DirEntry(std::string path)
DirEntry(std::string path) {
{ std::filesystem::path p(path);
std::filesystem::path p(path); ent = std::filesystem::directory_entry(p);
ent = std::filesystem::directory_entry(p); }
}
DirEntry(std::filesystem::directory_entry ent)
DirEntry(std::filesystem::directory_entry ent) : ent(ent) {}
: ent(ent) {}
virtual ~DirEntry() {}
virtual ~DirEntry() {}
std::string path();
std::string path(); std::string absolute_path();
std::string absolute_path(); std::string relative_path();
std::string relative_path(); std::string name();
std::string name();
uintmax_t size();
uintmax_t size(); TimePoint<FileClock, Second> last_write();
TimePoint<FileClock, Second> last_write(); bool exists();
bool exists(); FilePerms perms();
FilePerms perms(); uintmax_t hard_links();
uintmax_t hard_links();
bool move(std::string path);
bool move(std::string path); bool rename(std::string name);
bool rename(std::string name); virtual int remove() { return (int)false; }
virtual int remove() { return (int)false; } virtual void copy(std::string path, CopyOption opt) {}
virtual void copy(std::string path, CopyOption opt) {}
virtual const char* type_name() { return "dir_entry"; }
virtual const char* type_name() { return "dir_entry"; } FileType type();
FileType type(); bool is(FileType type);
bool is(FileType type); static FileType get_type() { return FileType::unknown; }
static FileType get_type() { return FileType::unknown; }
protected:
protected: std::filesystem::directory_entry ent;
std::filesystem::directory_entry ent; };
};
}
} }
Loading…
Cancel
Save