tag/VorbisComment: use std::string_view
This commit is contained in:
@@ -75,11 +75,11 @@ bool
|
||||
ParseReplayGainVorbis(ReplayGainInfo &info, StringView entry) noexcept
|
||||
{
|
||||
struct VorbisCommentEntry {
|
||||
StringView entry;
|
||||
std::string_view entry;
|
||||
|
||||
gcc_pure
|
||||
const char *operator[](StringView n) const noexcept {
|
||||
return GetVorbisCommentValue(entry, n).data;
|
||||
const char *operator[](std::string_view n) const noexcept {
|
||||
return GetVorbisCommentValue(entry, n).data();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -18,21 +18,19 @@
|
||||
*/
|
||||
|
||||
#include "VorbisComment.hxx"
|
||||
#include "util/StringView.hxx"
|
||||
#include "util/StringCompare.hxx"
|
||||
|
||||
#include <cassert>
|
||||
|
||||
StringView
|
||||
GetVorbisCommentValue(StringView entry, StringView name) noexcept
|
||||
std::string_view
|
||||
GetVorbisCommentValue(std::string_view entry, std::string_view name) noexcept
|
||||
{
|
||||
assert(!name.empty());
|
||||
|
||||
if (entry.StartsWithIgnoreCase(name) &&
|
||||
entry.size > name.size &&
|
||||
entry[name.size] == '=') {
|
||||
entry.skip_front(name.size + 1);
|
||||
return entry;
|
||||
}
|
||||
if (StringStartsWithIgnoreCase(entry, name) &&
|
||||
entry.size() > name.size() &&
|
||||
entry[name.size()] == '=')
|
||||
return entry.substr(name.size() + 1);
|
||||
|
||||
return nullptr;
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
#ifndef MPD_TAG_VORBIS_COMMENT_HXX
|
||||
#define MPD_TAG_VORBIS_COMMENT_HXX
|
||||
|
||||
struct StringView;
|
||||
#include <string_view>
|
||||
|
||||
/**
|
||||
* Checks if the specified name matches the entry's name, and if yes,
|
||||
* returns the comment value.
|
||||
*/
|
||||
[[gnu::pure]]
|
||||
StringView
|
||||
GetVorbisCommentValue(StringView entry, StringView name) noexcept;
|
||||
std::string_view
|
||||
GetVorbisCommentValue(std::string_view entry, std::string_view name) noexcept;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user