Commit 96413b16 authored by Denis Krjuchkov's avatar Denis Krjuchkov

fs/Traits.hxx: implement BuildFS() method

parent 2278fe42
...@@ -22,6 +22,31 @@ ...@@ -22,6 +22,31 @@
#include <string.h> #include <string.h>
PathTraits::string
PathTraits::BuildFS(PathTraits::const_pointer a, size_t a_size,
PathTraits::const_pointer b, size_t b_size)
{
assert(a != nullptr);
assert(b != nullptr);
if (a_size == 0)
return string(b, b_size);
if (b_size == 0)
return string(a, a_size);
string result(a, a_size);
if (!IsSeparatorFS(a[a_size - 1]))
result.push_back(SEPARATOR_FS);
if (IsSeparatorFS(b[0]))
result.append(b + 1, b_size - 1);
else
result.append(b, b_size);
return result;
}
const char * const char *
PathTraits::GetBaseUTF8(const char *p) PathTraits::GetBaseUTF8(const char *p)
{ {
......
...@@ -87,6 +87,16 @@ struct PathTraits { ...@@ -87,6 +87,16 @@ struct PathTraits {
} }
/** /**
* Constructs the path from the given components.
* If either of the components is empty string,
* remaining component is returned unchanged.
* If both components are empty strings, empty string is returned.
*/
gcc_pure gcc_nonnull_all
static string BuildFS(const_pointer a, size_t a_size,
const_pointer b, size_t b_size);
/**
* Determine the "base" file name of the given UTF-8 path. * Determine the "base" file name of the given UTF-8 path.
* The return value points inside the given string. * The return value points inside the given string.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment