namespace {
+#ifdef WIN32
inline bool is_windows_drive(const std::string &p)
{ return (p.size()==2 && ((p[0]>='A' && p[0]<='Z') || (p[0]>='a' && p[0]<='z')) && p[1]==':'); }
+#endif
}
if(is_windows_drive((*this)[0]))
return true;
#endif
- if(path[0]==DIRSEP)
- return true;
- return false;
+ return path[0]==DIRSEP;
}
Path Path::subpath(unsigned start, unsigned count) const
throw invalid_argument("Path::operator[]");
}
-bool Path::operator==(const Path &p) const
+bool Path::operator==(const Path &other) const
+{
+#ifdef WIN32
+ return strcasecmp(path, other.path)==0;
+#else
+ return path==other.path;
+#endif
+}
+
+bool Path::operator<(const Path &other) const
+{
+#ifdef WIN32
+ return strcasecmp(path, other.path)<0;
+#else
+ return path<other.path;
+#endif
+}
+
+bool Path::operator>(const Path &other) const
{
#ifdef WIN32
- return !strcasecmp(path, p.path);
+ return strcasecmp(path, other.path)>0;
#else
- return path==p.path;
+ return path>other.path;
#endif
}
start(0)
{
if(path.path.empty())
- start=end = string::npos;
+ start = end = string::npos;
else if(path.path[0]==DIRSEP)
end = 1;
#ifdef WIN32