UTILLib 2.0
Common C++ library with utilities.
Loading...
Searching...
No Matches
idirectory.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Ingemar Hedvall
3 * SPDX-License-Identifier: MIT
4 */
10#pragma once
11#include <util/ifile.h>
12
13#include <map>
14#include <memory>
15#include <string>
16#include <vector>
17
18namespace util::log {
19
20class IDirectory;
21
28using DirectoryList = std::map<std::string, std::unique_ptr<IDirectory>>;
29
35using FileList = std::map<std::string, std::unique_ptr<IFile>>;
36
43using FilterList = std::vector<std::string>;
44
60 public:
61 IDirectory() = default;
62 IDirectory(const IDirectory& source);
63
69 explicit IDirectory(const std::string& dir_path);
70
71 virtual ~IDirectory() = default;
72
78 [[nodiscard]] std::string Name() const;
79
85 void Directory(const std::string& dir);
86
92 [[nodiscard]] const std::string& Directory() const { return directory_; }
93
100 void Modified(uint64_t ns1970) { modified_ = ns1970; }
101
108 [[nodiscard]] uint64_t Modified() const { return modified_; }
109
116 void Level(size_t level) { level_ = level; }
117
123 [[nodiscard]] size_t Level() const { return level_; }
124
131 [[nodiscard]] const DirectoryList& Directories() const { return dir_list_; }
132
138 [[nodiscard]] const FileList& Files() const { return file_list_; }
139
146 [[nodiscard]] const FilterList& ExcludeList() const { return exclude_list_; }
147
155 [[nodiscard]] FilterList& ExcludeList() { return exclude_list_; }
156
163 [[nodiscard]] std::string ExcludeListToString() const;
164
170 void StringToExcludeList(const std::string& text);
171
178 [[nodiscard]] const FilterList& IncludeList() const { return include_list_; }
179
187 [[nodiscard]] FilterList& IncludeList() { return include_list_; }
188
195 [[nodiscard]] std::string IncludeListToString() const;
196
202 void StringToIncludeList(const std::string& text);
203
211 virtual bool ScanDirectory();
212
218 [[nodiscard]] const std::string& LastError() const { return last_error_; }
219
220 protected:
227 [[nodiscard]] bool IncludeFile(const std::string& name) const;
228
235 [[nodiscard]] bool ExcludeFile(const std::string& name) const;
236
237 private:
238 size_t level_ = 0;
239 std::string directory_;
240 DirectoryList dir_list_;
241 FileList file_list_;
242 FilterList exclude_list_;
243 FilterList include_list_;
244 uint64_t modified_ = 0;
245 std::string last_error_;
246};
247
248} // namespace util::log
The class is simple wrapper around a directory/file tree structure. It is typically used in applicati...
Definition idirectory.h:59
void Level(size_t level)
Set the directory level.
Definition idirectory.h:116
virtual ~IDirectory()=default
Destructor.
IDirectory(const IDirectory &source)
Copy constructor.
const DirectoryList & Directories() const
Returns the sub-directory list.
Definition idirectory.h:131
const std::string & LastError() const
Returns last error text.
Definition idirectory.h:218
std::string ExcludeListToString() const
Converts a list into a text string.
void StringToExcludeList(const std::string &text)
Convert a string into a exclude list.ยง
FilterList & IncludeList()
Returns a list of name filters.
Definition idirectory.h:187
FilterList & ExcludeList()
Returns a list of name filters.
Definition idirectory.h:155
bool ExcludeFile(const std::string &name) const
Checks if the name is matching anything in the exclude list.
IDirectory()=default
Default constructor.
const FileList & Files() const
Returns a list files in the directory.
Definition idirectory.h:138
void Directory(const std::string &dir)
Sets the directory.
IDirectory(const std::string &dir_path)
Constructor by supplying a full path to a directory.
size_t Level() const
Returns the relative directory depth level.
Definition idirectory.h:123
void Modified(uint64_t ns1970)
Sets the last modified time.
Definition idirectory.h:100
const std::string & Directory() const
Returns the directory.
Definition idirectory.h:92
bool IncludeFile(const std::string &name) const
Checks if the name is matching anything in the include list.
virtual bool ScanDirectory()
Scan the directory amd updated file and sub-directory lists.
std::string Name() const
Returns the name of the directory without path.
const FilterList & ExcludeList() const
Returns a list of name filters.
Definition idirectory.h:146
uint64_t Modified() const
Return last change time for the directory.
Definition idirectory.h:108
void StringToIncludeList(const std::string &text)
Convert a string into a include list.
const FilterList & IncludeList() const
Returns a list of name filters.
Definition idirectory.h:178
std::string IncludeListToString() const
Converts a list into a text string.
The log namespace is used for log related classes and functions.
Definition idirectory.h:18
std::map< std::string, std::unique_ptr< IFile > > FileList
Sorted list of files in the directory.
Definition idirectory.h:35
std::vector< std::string > FilterList
List of name filters.
Definition idirectory.h:43
std::map< std::string, std::unique_ptr< IDirectory > > DirectoryList
Sorted list of directories.
Definition idirectory.h:28