return result;
}
+Path common_ancestor(const Path &path1, const Path &path2)
+{
+ Path::Iterator i = path1.begin();
+ Path::Iterator j = path2.begin();
+ Path result;
+ for(; (i!=path1.end() && j!=path2.end() && *i==*j); ++i, ++j)
+ result /= *i;
+ return result;
+}
+
int descendant_depth(const Path &path, const Path &parent)
{
Path::Iterator i = path.begin();
/// Makes a path relative to some base path. That is, base/result==path.
Path relative(const Path &path, const Path &base);
+/// Returns the longest prefix shared by both paths.
+Path common_ancestor(const Path &, const Path &);
+
/** Determines how many levels a path is below another. Returns -1 if path is
not a descendant of parent. */
int descendant_depth(const Path &path, const Path &parent);