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 "DatabasePlugin.hxx"
|
||||
#include "DetachedSong.hxx"
|
||||
#include "Mapper.hxx"
|
||||
|
||||
#include <functional>
|
||||
|
||||
@ -31,7 +32,8 @@ static bool
|
||||
AddSong(const char *playlist_path_utf8,
|
||||
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
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "Partition.hxx"
|
||||
#include "util/Error.hxx"
|
||||
#include "DetachedSong.hxx"
|
||||
#include "Mapper.hxx"
|
||||
|
||||
#include <functional>
|
||||
|
||||
@ -31,7 +32,8 @@ static bool
|
||||
AddToQueue(Partition &partition, const Song &song, Error &error)
|
||||
{
|
||||
PlaylistResult result =
|
||||
partition.playlist.AppendSong(partition.pc, DetachedSong(song),
|
||||
partition.playlist.AppendSong(partition.pc,
|
||||
map_song_detach(song),
|
||||
nullptr);
|
||||
if (result != PlaylistResult::SUCCESS) {
|
||||
error.Set(playlist_domain, int(result), "Playlist error");
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "DatabaseGlue.hxx"
|
||||
#include "DatabasePlugin.hxx"
|
||||
#include "DetachedSong.hxx"
|
||||
#include "Mapper.hxx"
|
||||
|
||||
DetachedSong *
|
||||
DatabaseDetachSong(const char *uri, Error &error)
|
||||
@ -34,7 +35,7 @@ DatabaseDetachSong(const char *uri, Error &error)
|
||||
if (tmp == nullptr)
|
||||
return nullptr;
|
||||
|
||||
DetachedSong *song = new DetachedSong(*tmp);
|
||||
DetachedSong *song = new DetachedSong(map_song_detach(*tmp));
|
||||
db->ReturnSong(tmp);
|
||||
return song;
|
||||
}
|
||||
|
@ -32,6 +32,8 @@
|
||||
struct Song;
|
||||
|
||||
class DetachedSong {
|
||||
friend DetachedSong map_song_detach(const Song &song);
|
||||
|
||||
/**
|
||||
* An UTF-8-encoded URI referring to the song file. This can
|
||||
* be one of:
|
||||
@ -60,6 +62,8 @@ class DetachedSong {
|
||||
*/
|
||||
unsigned end_ms;
|
||||
|
||||
explicit DetachedSong(const Song &other);
|
||||
|
||||
public:
|
||||
explicit DetachedSong(const DetachedSong &other)
|
||||
:uri(other.uri),
|
||||
@ -67,8 +71,6 @@ public:
|
||||
mtime(other.mtime),
|
||||
start_ms(other.start_ms), end_ms(other.end_ms) {}
|
||||
|
||||
explicit DetachedSong(const Song &other);
|
||||
|
||||
explicit DetachedSong(const char *_uri)
|
||||
:uri(_uri),
|
||||
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);
|
||||
}
|
||||
|
||||
DetachedSong
|
||||
map_song_detach(const Song &song)
|
||||
{
|
||||
return DetachedSong(song);
|
||||
}
|
||||
|
||||
AllocatedPath
|
||||
map_song_fs(const Song &song)
|
||||
{
|
||||
|
@ -106,6 +106,14 @@ gcc_pure
|
||||
AllocatedPath
|
||||
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
|
||||
* remote song.
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "util/Error.hxx"
|
||||
#include "Song.hxx"
|
||||
#include "DetachedSong.hxx"
|
||||
#include "Mapper.hxx"
|
||||
#include "Idle.hxx"
|
||||
#include "DatabaseSong.hxx"
|
||||
#include "Log.hxx"
|
||||
|
Loading…
Reference in New Issue
Block a user