queue/Queue: add method GetLight()

This commit is contained in:
Max Kellermann 2022-02-14 13:20:56 +01:00
parent ec961f26e9
commit c68dbc4e5c
4 changed files with 23 additions and 1 deletions

View File

@ -19,6 +19,7 @@
#include "Queue.hxx"
#include "song/DetachedSong.hxx"
#include "song/LightSong.hxx"
#include <algorithm>
@ -38,6 +39,15 @@ Queue::~Queue() noexcept
delete[] order;
}
LightSong
Queue::GetLight(unsigned position) const noexcept
{
assert(position < length);
LightSong song{Get(position)};
return song;
}
int
Queue::GetNextOrder(unsigned _order) const noexcept
{

View File

@ -29,6 +29,7 @@
#include <cstdint>
#include <utility>
struct LightSong;
class DetachedSong;
/**
@ -200,6 +201,11 @@ struct Queue {
return *items[position].song;
}
/**
* Like Get(), but return a #LightSong instance.
*/
LightSong GetLight(unsigned position) const noexcept;
/**
* Returns the song at the specified order number.
*/

View File

@ -28,7 +28,7 @@ QueueSelection::MatchPosition(const Queue &queue,
unsigned position) const noexcept
{
if (filter != nullptr) {
const LightSong song{queue.Get(position)};
const auto song = queue.GetLight(position);
if (!filter->Match(song))
return false;
}

View File

@ -1,5 +1,6 @@
#include "queue/Queue.hxx"
#include "song/DetachedSong.hxx"
#include "song/LightSong.hxx"
#include <gtest/gtest.h>
@ -8,6 +9,11 @@
Tag::Tag(const Tag &) noexcept {}
void Tag::Clear() noexcept {}
DetachedSong::operator LightSong() const noexcept
{
return {uri.c_str(), tag};
}
static void
check_descending_priority(const Queue *queue,
unsigned start_order)