logging/backend: Use std::string_view in RemoveBackend() and GetBackend()

These can just use a view to a string since its only comparing against
two names in both cases for matches. This avoids constructing
std::string instances where they aren't necessary.
This commit is contained in:
Lioncash 2018-07-20 15:27:17 -04:00 committed by zhupengfei
parent 4a3c4f5f67
commit 765c7e711a
2 changed files with 13 additions and 12 deletions

View File

@ -47,11 +47,11 @@ public:
backends.push_back(std::move(backend));
}
void RemoveBackend(const std::string& backend_name) {
void RemoveBackend(std::string_view backend_name) {
std::lock_guard<std::mutex> lock(writing_mutex);
auto it = std::remove_if(backends.begin(), backends.end(), [&backend_name](const auto& i) {
return !strcmp(i->GetName(), backend_name.c_str());
});
const auto it =
std::remove_if(backends.begin(), backends.end(),
[&backend_name](const auto& i) { return backend_name == i->GetName(); });
backends.erase(it, backends.end());
}
@ -63,10 +63,10 @@ public:
filter = f;
}
Backend* GetBackend(const std::string& backend_name) {
auto it = std::find_if(backends.begin(), backends.end(), [&backend_name](const auto& i) {
return !strcmp(i->GetName(), backend_name.c_str());
});
Backend* GetBackend(std::string_view backend_name) {
const auto it =
std::find_if(backends.begin(), backends.end(),
[&backend_name](const auto& i) { return backend_name == i->GetName(); });
if (it == backends.end())
return nullptr;
return it->get();
@ -268,11 +268,11 @@ void AddBackend(std::unique_ptr<Backend> backend) {
Impl::Instance().AddBackend(std::move(backend));
}
void RemoveBackend(const std::string& backend_name) {
void RemoveBackend(std::string_view backend_name) {
Impl::Instance().RemoveBackend(backend_name);
}
Backend* GetBackend(const std::string& backend_name) {
Backend* GetBackend(std::string_view backend_name) {
return Impl::Instance().GetBackend(backend_name);
}

View File

@ -8,6 +8,7 @@
#include <cstdarg>
#include <memory>
#include <string>
#include <string_view>
#include <utility>
#include "common/file_util.h"
#include "common/logging/filter.h"
@ -107,9 +108,9 @@ private:
void AddBackend(std::unique_ptr<Backend> backend);
void RemoveBackend(const std::string& backend_name);
void RemoveBackend(std::string_view backend_name);
Backend* GetBackend(const std::string& backend_name);
Backend* GetBackend(std::string_view backend_name);
/**
* Returns the name of the passed log class as a C-string. Subclasses are separated by periods