45#include <drain/RegExp.h>
62 typedef Path<std::string,
'/',
true,
false,
true>
path_t;
66 template<
typename ...TT>
82 this->basename.clear();
83 this->extension.clear();
88 template<
typename ...TT>
90 void set(
const TT &... args){
95 template<
typename T,
typename ...TT>
96 void append(
const T & arg,
const TT &... args){
103 void append(
const FilePath & path);
109 void append(
const std::string & s);
123 bool operator==(
const FilePath & p)
const {
125 if (p.basename != basename)
128 if (p.extension != extension)
139 std::string basename;
140 std::string extension;
152 std::ostream &
toStream(std::ostream & ostr)
const {
156 if (!dir.back().empty())
157 ostr << dir.separator.character;
162 if (!extension.empty())
163 ostr <<
'.' << extension;
170 std::string str()
const {
171 std::stringstream sstr;
177 FilePath & operator<<(
const FilePath & path){
178 this->dir << path.dir;
179 if (!this->basename.empty())
180 std::cerr << __FILE__ <<
" warning: dropped:" << this->basename <<
'\n';
181 this->basename = path.basename;
182 this->extension = path.extension;
188 int mkdir(
const std::string & dirpath,
int flags = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH){
189 return mkdir(FilePath::path_t(dirpath), flags);
194 int mkdir(
const FilePath::path_t & dirpath,
int flags = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
200std::ostream & operator<<(std::ostream & ostr,
const FilePath & p) {
201 return p.toStream(ostr);
Extracts and stores directory path, base filename and extension.
Definition FilePath.h:58
virtual std::ostream & toStream(std::ostream &ostr) const
Directory path separator.
Definition FilePath.h:152
FilePath(const TT &... args)
Constructor.
Definition FilePath.h:68
void append(const T2 &arg, const TT &... args)
Append path with element(s), path(s) or string(s).
Definition Path.h:196
Definition DataSelector.cpp:1277