Mapper: add function map_song_detach()
Make the DetachedSong(Song) conversion constructor private. Everybody should use map_song_detach() which will take over more responsibilities soon.
This commit is contained in:
parent
75b847132a
commit
61b01f82ef
@ -24,6 +24,7 @@
|
|||||||
#include "DatabaseGlue.hxx"
|
#include "DatabaseGlue.hxx"
|
||||||
#include "DatabasePlugin.hxx"
|
#include "DatabasePlugin.hxx"
|
||||||
#include "DetachedSong.hxx"
|
#include "DetachedSong.hxx"
|
||||||
|
#include "Mapper.hxx"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
@ -31,7 +32,8 @@ static bool
|
|||||||
AddSong(const char *playlist_path_utf8,
|
AddSong(const char *playlist_path_utf8,
|
||||||
Song &song, Error &error)
|
Song &song, Error &error)
|
||||||
{
|
{
|
||||||
return spl_append_song(playlist_path_utf8, DetachedSong(song), error);
|
return spl_append_song(playlist_path_utf8, map_song_detach(song),
|
||||||
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "Partition.hxx"
|
#include "Partition.hxx"
|
||||||
#include "util/Error.hxx"
|
#include "util/Error.hxx"
|
||||||
#include "DetachedSong.hxx"
|
#include "DetachedSong.hxx"
|
||||||
|
#include "Mapper.hxx"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
@ -31,7 +32,8 @@ static bool
|
|||||||
AddToQueue(Partition &partition, const Song &song, Error &error)
|
AddToQueue(Partition &partition, const Song &song, Error &error)
|
||||||
{
|
{
|
||||||
PlaylistResult result =
|
PlaylistResult result =
|
||||||
partition.playlist.AppendSong(partition.pc, DetachedSong(song),
|
partition.playlist.AppendSong(partition.pc,
|
||||||
|
map_song_detach(song),
|
||||||
nullptr);
|
nullptr);
|
||||||
if (result != PlaylistResult::SUCCESS) {
|
if (result != PlaylistResult::SUCCESS) {
|
||||||
error.Set(playlist_domain, int(result), "Playlist error");
|
error.Set(playlist_domain, int(result), "Playlist error");
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "DatabaseGlue.hxx"
|
#include "DatabaseGlue.hxx"
|
||||||
#include "DatabasePlugin.hxx"
|
#include "DatabasePlugin.hxx"
|
||||||
#include "DetachedSong.hxx"
|
#include "DetachedSong.hxx"
|
||||||
|
#include "Mapper.hxx"
|
||||||
|
|
||||||
DetachedSong *
|
DetachedSong *
|
||||||
DatabaseDetachSong(const char *uri, Error &error)
|
DatabaseDetachSong(const char *uri, Error &error)
|
||||||
@ -34,7 +35,7 @@ DatabaseDetachSong(const char *uri, Error &error)
|
|||||||
if (tmp == nullptr)
|
if (tmp == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
DetachedSong *song = new DetachedSong(*tmp);
|
DetachedSong *song = new DetachedSong(map_song_detach(*tmp));
|
||||||
db->ReturnSong(tmp);
|
db->ReturnSong(tmp);
|
||||||
return song;
|
return song;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
struct Song;
|
struct Song;
|
||||||
|
|
||||||
class DetachedSong {
|
class DetachedSong {
|
||||||
|
friend DetachedSong map_song_detach(const Song &song);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An UTF-8-encoded URI referring to the song file. This can
|
* An UTF-8-encoded URI referring to the song file. This can
|
||||||
* be one of:
|
* be one of:
|
||||||
@ -60,6 +62,8 @@ class DetachedSong {
|
|||||||
*/
|
*/
|
||||||
unsigned end_ms;
|
unsigned end_ms;
|
||||||
|
|
||||||
|
explicit DetachedSong(const Song &other);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DetachedSong(const DetachedSong &other)
|
explicit DetachedSong(const DetachedSong &other)
|
||||||
:uri(other.uri),
|
:uri(other.uri),
|
||||||
@ -67,8 +71,6 @@ public:
|
|||||||
mtime(other.mtime),
|
mtime(other.mtime),
|
||||||
start_ms(other.start_ms), end_ms(other.end_ms) {}
|
start_ms(other.start_ms), end_ms(other.end_ms) {}
|
||||||
|
|
||||||
explicit DetachedSong(const Song &other);
|
|
||||||
|
|
||||||
explicit DetachedSong(const char *_uri)
|
explicit DetachedSong(const char *_uri)
|
||||||
:uri(_uri),
|
:uri(_uri),
|
||||||
mtime(0), start_ms(0), end_ms(0) {}
|
mtime(0), start_ms(0), end_ms(0) {}
|
||||||
|
@ -217,6 +217,12 @@ map_detached_song_fs(const char *uri_utf8)
|
|||||||
return AllocatedPath::Build(music_dir_fs, uri_fs);
|
return AllocatedPath::Build(music_dir_fs, uri_fs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DetachedSong
|
||||||
|
map_song_detach(const Song &song)
|
||||||
|
{
|
||||||
|
return DetachedSong(song);
|
||||||
|
}
|
||||||
|
|
||||||
AllocatedPath
|
AllocatedPath
|
||||||
map_song_fs(const Song &song)
|
map_song_fs(const Song &song)
|
||||||
{
|
{
|
||||||
|
@ -106,6 +106,14 @@ gcc_pure
|
|||||||
AllocatedPath
|
AllocatedPath
|
||||||
map_directory_child_fs(const Directory &directory, const char *name);
|
map_directory_child_fs(const Directory &directory, const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* "Detach" the #Song object, i.e. convert it to a #DetachedSong
|
||||||
|
* instance.
|
||||||
|
*/
|
||||||
|
gcc_pure
|
||||||
|
DetachedSong
|
||||||
|
map_song_detach(const Song &song);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines the file system path of a song. This must not be a
|
* Determines the file system path of a song. This must not be a
|
||||||
* remote song.
|
* remote song.
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "util/Error.hxx"
|
#include "util/Error.hxx"
|
||||||
#include "Song.hxx"
|
#include "Song.hxx"
|
||||||
#include "DetachedSong.hxx"
|
#include "DetachedSong.hxx"
|
||||||
|
#include "Mapper.hxx"
|
||||||
#include "Idle.hxx"
|
#include "Idle.hxx"
|
||||||
#include "DatabaseSong.hxx"
|
#include "DatabaseSong.hxx"
|
||||||
#include "Log.hxx"
|
#include "Log.hxx"
|
||||||
|
Loading…
Reference in New Issue
Block a user