summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2020-04-03 19:25:46 +0200
committerMax Kellermann <max@musicpd.org>2020-04-03 19:29:01 +0200
commit3a83a6b5274a7abb12c5d11392d872024a490e37 (patch)
tree69cff9c2a001e09eb39bf589f9b7e5cdb714cc9f /src
parentbcf4645263a9d4f0b188a6506db8b5650b1df0b1 (diff)
storage/Composite: NextSegment() returns std::string_view
Diffstat (limited to 'src')
-rw-r--r--src/storage/CompositeStorage.cxx12
-rw-r--r--src/storage/CompositeStorage.hxx2
2 files changed, 7 insertions, 7 deletions
diff --git a/src/storage/CompositeStorage.cxx b/src/storage/CompositeStorage.cxx
index 5bd5318e3..c124d0d31 100644
--- a/src/storage/CompositeStorage.cxx
+++ b/src/storage/CompositeStorage.cxx
@@ -82,17 +82,17 @@ CompositeDirectoryReader::GetInfo(bool follow)
return StorageFileInfo(StorageFileInfo::Type::DIRECTORY);
}
-static std::string
+static std::string_view
NextSegment(const char *&uri_r)
{
const char *uri = uri_r;
const char *slash = strchr(uri, '/');
if (slash == nullptr) {
uri_r += strlen(uri);
- return std::string(uri);
+ return uri;
} else {
uri_r = slash + 1;
- return std::string(uri, slash);
+ return std::string_view(uri, slash - uri);
}
}
@@ -101,7 +101,7 @@ CompositeStorage::Directory::Find(const char *uri) const noexcept
{
const Directory *directory = this;
while (*uri != 0) {
- const std::string name = NextSegment(uri);
+ const auto name = NextSegment(uri);
auto i = directory->children.find(name);
if (i == directory->children.end())
return nullptr;
@@ -142,7 +142,7 @@ CompositeStorage::Directory::Unmount(const char *uri) noexcept
if (StringIsEmpty(uri))
return Unmount();
- const std::string name = NextSegment(uri);
+ const auto name = NextSegment(uri);
auto i = children.find(name);
if (i == children.end() || !i->second.Unmount(uri))
@@ -227,7 +227,7 @@ CompositeStorage::FindStorage(const char *uri) const noexcept
const Directory *directory = &root;
while (*uri != 0) {
- const std::string name = NextSegment(uri);
+ const auto name = NextSegment(uri);
auto i = directory->children.find(name);
if (i == directory->children.end())
diff --git a/src/storage/CompositeStorage.hxx b/src/storage/CompositeStorage.hxx
index be6fdb66b..2646101a7 100644
--- a/src/storage/CompositeStorage.hxx
+++ b/src/storage/CompositeStorage.hxx
@@ -49,7 +49,7 @@ class CompositeStorage final : public Storage {
*/
std::unique_ptr<Storage> storage;
- std::map<std::string, Directory> children;
+ std::map<std::string, Directory, std::less<>> children;
gcc_pure
bool IsEmpty() const noexcept {