00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef FILENAME_H
00021 #define FILENAME_H
00022
00023 #include <string>
00024
00025 using std::string;
00026
00028
00039 class FileName : public string
00040 {
00041
00042 public:
00043 FileName() : string("") {}
00044 FileName(const string & filename) : string(filename) {}
00045 ~FileName() {}
00046
00048 bool operator<(const FileName & fn);
00050 bool operator==(const FileName & fn);
00051
00052
00053
00054
00055 string qualified() const;
00056 string base(bool ext=true) const;
00057 string path() const;
00058 string relpath() const;
00059 string ext(bool dot=true) const;
00060
00063 void set(const string & filename) {*this=filename;}
00064 void setBase(const string & basename, bool ext=true);
00065 void setExt(const string & extension);
00066 void setPath(const string & path);
00067
00068 bool isValid();
00069 bool isRelative();
00074 static void setCaseSensitiveCompare(bool csc) {mCaseSensitive = csc;}
00075
00076 private:
00077 #ifdef _WIN32
00078 static const char delim() {return '\\';}
00079 #else
00080 static const char delim() {return '/';}
00081 #endif
00082
00083 static bool mCaseSensitive;
00084
00085 };
00086
00087
00088 #endif