41#include <drain/RegExp.h>
58 typedef Path<std::string,
'/',
true,
false,
true>
path_t;
62 template<
typename ...TT>
79 this->extension.clear();
84 return (dir.empty() && tail.empty());
89 template<
typename ...TT>
91 void set(
const TT &... args){
96 template<
typename T,
typename ...TT>
97 void append(
const T & arg,
const TT &... args){
104 void append(
const FilePath & path);
110 void append(
const std::string & s);
114 void append(
const char *s){
115 append(std::string(s));
130 bool operator==(
const FilePath & p)
const {
135 if (p.extension != extension)
147 std::string extension;
159 std::ostream &
toStream(std::ostream & ostr)
const {
163 if (!dir.back().empty())
164 ostr << dir.separator.character;
169 if (!extension.empty())
170 ostr <<
'.' << extension;
177 std::string str()
const {
178 std::stringstream sstr;
184 operator std::string ()
const {
189 FilePath & operator<<(
const FilePath & path){
205 int mkdir(
const std::string & dirpath,
int flags = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH){
206 return mkdir(FilePath::path_t(dirpath), flags);
211 int mkdir(
const FilePath::path_t & dirpath,
int flags = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
214 void debug(std::ostream & ostr = std::cout)
const;
218 void handleBasename(
const std::string & basename);
223std::ostream & operator<<(std::ostream & ostr,
const FilePath & p) {
224 return p.toStream(ostr);
Extracts and stores directory path, base filename and extension.
Definition FilePath.h:54
virtual std::ostream & toStream(std::ostream &ostr) const
Directory path separator.
Definition FilePath.h:159
FilePath(const TT &... args)
Constructor.
Definition FilePath.h:64
void append(const T2 &arg, const TT &... args)
Append path with element(s), path(s) or string(s).
Definition Path.h:223
Definition DataSelector.cpp:1277