fs/Traits: add Apply()
This commit is contained in:
parent
2b1d6ad396
commit
b168a9d469
@ -124,6 +124,11 @@ public:
|
|||||||
b.value.c_str(), b.value.size());
|
b.value.c_str(), b.value.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gcc_pure
|
||||||
|
static AllocatedPath Apply(Path base, Path path) noexcept {
|
||||||
|
return Traits::Apply(base.c_str(), path.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a C string that is already in the filesystem
|
* Convert a C string that is already in the filesystem
|
||||||
* character set to a #Path instance.
|
* character set to a #Path instance.
|
||||||
|
@ -144,6 +144,20 @@ PathTraitsFS::Relative(const_pointer_type base, const_pointer_type other) noexce
|
|||||||
return RelativePathImpl<PathTraitsFS>(base, other);
|
return RelativePathImpl<PathTraitsFS>(base, other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PathTraitsFS::string
|
||||||
|
PathTraitsFS::Apply(const_pointer_type base, const_pointer_type path) noexcept
|
||||||
|
{
|
||||||
|
// TODO: support the Windows syntax (absolute path with or without drive, drive with relative path)
|
||||||
|
|
||||||
|
if (base == nullptr)
|
||||||
|
return path;
|
||||||
|
|
||||||
|
if (IsAbsolute(path))
|
||||||
|
return path;
|
||||||
|
|
||||||
|
return Build(base, path);
|
||||||
|
}
|
||||||
|
|
||||||
PathTraitsUTF8::string
|
PathTraitsUTF8::string
|
||||||
PathTraitsUTF8::Build(const_pointer_type a, size_t a_size,
|
PathTraitsUTF8::Build(const_pointer_type a, size_t a_size,
|
||||||
const_pointer_type b, size_t b_size) noexcept
|
const_pointer_type b, size_t b_size) noexcept
|
||||||
|
@ -158,6 +158,14 @@ struct PathTraitsFS {
|
|||||||
static string Build(const_pointer_type a, const_pointer_type b) noexcept {
|
static string Build(const_pointer_type a, const_pointer_type b) noexcept {
|
||||||
return Build(a, GetLength(a), b, GetLength(b));
|
return Build(a, GetLength(a), b, GetLength(b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interpret the given path as being relative to the given
|
||||||
|
* base, and return the concatenated path.
|
||||||
|
*/
|
||||||
|
gcc_pure
|
||||||
|
static string Apply(const_pointer_type base,
|
||||||
|
const_pointer_type path) noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user