60 lines
1.3 KiB
C++
60 lines
1.3 KiB
C++
// Copyright (c) 2023 Dominic Masters
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
|
|
#pragma once
|
|
#include "util/File.hpp"
|
|
#include <filesystem>
|
|
|
|
namespace Dawn {
|
|
enum DirectoryChildType {
|
|
DIRECTORY_CHILD_TYPE_FILE,
|
|
DIRECTORY_CHILD_TYPE_DIRECTORY
|
|
};
|
|
|
|
class Directory {
|
|
public:
|
|
std::string filename;
|
|
std::filesystem::directory_iterator handle;
|
|
|
|
Directory(std::string dir);
|
|
|
|
/**
|
|
* Opens a connection to the directory.
|
|
* @return True if success, otherwise for failure.
|
|
*/
|
|
bool_t open();
|
|
|
|
/**
|
|
* Returns if the directory is open.
|
|
* @return True if open, otherwise false.
|
|
*/
|
|
bool_t isOpen();
|
|
|
|
/**
|
|
* Closes the directory.
|
|
*/
|
|
void close();
|
|
|
|
/**
|
|
* Returns if the directory exists.
|
|
* @return True if exists, otherwise false.
|
|
*/
|
|
bool_t exists();
|
|
|
|
/**
|
|
* Creates the directory and all parent directories.
|
|
*/
|
|
void mkdirp();
|
|
|
|
/**
|
|
* Reads the directory and returns a list of files.
|
|
*
|
|
* @return List of filenames/directories within this directory.
|
|
*/
|
|
std::map<std::string, enum DirectoryChildType> readDirectory();
|
|
|
|
~Directory();
|
|
};
|
|
} |