#pragma once struct FileInfo { std::string name; std::string fullName; bool exists; bool isDirectory; bool isWritable; uint64_t size; }; bool getFileInfo(const char *path, FileInfo *fileInfo); bool rIsDir(const std::string& filename); bool rRmdir(const std::string& dir); bool rMkdir(const std::string& dir); bool rMkpath(const std::string& path); bool rRename(const std::string& from, const std::string& to); bool rCopy(const std::string& from, const std::string& to, bool overwrite); bool rExists(const std::string& path); bool rRemoveFile(const std::string& path); enum rSeekMode { rFromStart, rFromCurrent, rFromEnd }; class rFile { public: enum OpenMode { read, write, read_write, write_append, write_excl }; rFile(); rFile(const rFile& other) = delete; ~rFile(); rFile(const std::string& filename, rFile::OpenMode open = rFile::read); rFile(int fd); static bool Access(const std::string &filename, rFile::OpenMode mode); size_t Write(const void *buffer, size_t count); bool Write(const std::string &text); bool Close(); bool Create(const std::string &filename, bool overwrite = false, int access = 0666); bool Open(const std::string &filename, rFile::OpenMode mode = rFile::read, int access = 0666); static bool Exists(const std::string&); bool IsOpened() const; size_t Length() const; size_t Read(void *buffer, size_t count); size_t Seek(size_t ofs, rSeekMode mode = rFromStart); size_t Tell() const; void *handle; }; struct rDir { rDir(); ~rDir(); rDir(const rDir& other) = delete; rDir(const std::string &path); bool Open(const std::string& path); bool IsOpened() const; static bool Exists(const std::string &path); bool GetFirst(std::string *filename) const; bool GetNext(std::string *filename) const; void *handle; }; struct rFileName { rFileName(); rFileName(const rFileName& other); ~rFileName(); rFileName(const std::string& name); std::string GetFullPath(); std::string GetPath(); std::string GetName(); std::string GetFullName(); bool Normalize(); void *handle; };