Test namaespace

main
anulax1225 ago%!(EXTRA string=1 year)
parent 1371a8820c
commit e0b773c6a7
  1. 126
      src/bakatools/file_system/dir_entry.cpp
  2. 93
      src/bakatools/file_system/dir_entry.h

@ -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…
Cancel
Save