File size: 6,726 Bytes
9375c9a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
// Copyright (C) 2009 Davis E. King ([email protected])
// License: Boost Software License See LICENSE.txt for the full license.
#undef DLIB_DIR_NAV_EXTENSIONs_ABSTRACT_
#ifdef DLIB_DIR_NAV_EXTENSIONs_ABSTRACT_
#include <string>
#include <vector>
#include "dir_nav_kernel_abstract.h"
namespace dlib
{
// ----------------------------------------------------------------------------------------
bool file_exists (
const std::string& filename
);
/*!
ensures
- if (a file with the given filename exists) then
- returns true
- else
- returns false
!*/
// ----------------------------------------------------------------------------------------
template <typename T>
const std::vector<file> get_files_in_directory_tree (
const directory& top_of_tree,
const T& add_file,
unsigned long max_depth = 30
);
/*!
requires
- add_file must be a function object with the following prototype:
bool add_file (file f);
ensures
- performs a recursive search through the directory top_of_tree and all
its sub-directories (up to the given max depth). All files in these
directories are examined by passing them to add_file() and if it
returns true then they will be included in the returned std::vector<file>
object.
- Note that a max_depth of 0 means that only the files in the directory
top_of_tree will be considered. A depth of 1 means that only files in
top_of_tree and its immediate sub-directories will be considered. And
so on...
!*/
// ----------------------------------------------------------------------------------------
class match_ending
{
/*!
WHAT THIS OBJECT REPRESENTS
This is a simple function object that can be used with the
above get_files_in_directory_tree() function. This object
just looks for files with a certain ending.
!*/
public:
match_ending (
const std::string& ending
);
/*!
ensures
- this object will be a function that checks if a file has a
name that ends with the given ending string.
!*/
bool operator() (
const file& f
) const;
/*!
ensures
- if (the file f has a name that ends with the ending string given
to this object's constructor) then
- returns true
- else
- returns false
!*/
};
// ----------------------------------------------------------------------------------------
class match_endings
{
/*!
WHAT THIS OBJECT REPRESENTS
This is a simple function object that can be used with the
above get_files_in_directory_tree() function. This object
allows you to look for files with a number of different
endings.
!*/
public:
match_endings (
const std::string& ending_list
);
/*!
ensures
- ending_list is interpreted as a whitespace separated list
of file endings.
- this object will be a function that checks if a file has a
name that ends with one of the strings in ending_list.
!*/
bool operator() (
const file& f
) const;
/*!
ensures
- if (the file f has a name that ends with one of the ending strings
given to this object's constructor) then
- returns true
- else
- returns false
!*/
};
// ----------------------------------------------------------------------------------------
class match_all
{
/*!
WHAT THIS OBJECT REPRESENTS
This is a simple function object that can be used with the
above get_files_in_directory_tree() function. This object
matches all files.
!*/
public:
bool operator() (
const file& f
) const;
/*!
ensures
- returns true
(i.e. this function doesn't do anything. It just says it
matches all files no matter what)
!*/
};
// ----------------------------------------------------------------------------------------
directory get_parent_directory (
const directory& dir
);
/*!
ensures
- returns the parent directory of dir. In particular, this
function returns the value of dir.get_parent()
!*/
// ----------------------------------------------------------------------------------------
directory get_parent_directory (
const file& f
);
/*!
ensures
- if (f.full_name() != "") then
- returns the directory which contains the given file
- else
- returns a default initialized directory (i.e. directory())
!*/
// ----------------------------------------------------------------------------------------
std::string select_oldest_file (
const std::string& filename1,
const std::string& filename2
);
/*!
ensures
- Checks the last modification times of the two given files and returns the
filename of the oldest file, i.e., the file that has gone longest since being
modified. Ties are broken arbitrarily.
- For the purpose of comparison, a file that doesn't exist is presumed to have
a last modification time of -infinity (i.e. very far in the past).
!*/
// ----------------------------------------------------------------------------------------
std::string select_newest_file (
const std::string& filename1,
const std::string& filename2
);
/*!
ensures
- Checks the last modification times of the two given files and returns the
filename that was most recently modified. Ties are broken arbitrarily.
- For the purpose of comparison, a file that doesn't exist is presumed to have
a last modification time of -infinity (i.e. very far in the past).
!*/
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_DIR_NAV_EXTENSIONs_ABSTRACT_
|