playlist/cue/CueParser: Get() returns std::unique_ptr

This commit is contained in:
Max Kellermann 2016-02-07 11:58:17 +01:00
parent 5869a4ba2d
commit e2a0fd7a28
4 changed files with 13 additions and 11 deletions

View File

@ -281,7 +281,7 @@ CueParser::Finish()
end = true;
}
DetachedSong *
std::unique_ptr<DetachedSong>
CueParser::Get()
{
if (finished == nullptr && end) {
@ -293,5 +293,7 @@ CueParser::Get()
previous.reset();
}
return finished.release();
auto result = std::move(finished);
finished.reset();
return result;
}

View File

@ -118,7 +118,7 @@ public:
* @return a song object that must be freed by the caller, or NULL if
* no song was finished at this time
*/
DetachedSong *Get();
std::unique_ptr<DetachedSong> Get();
private:
gcc_pure

View File

@ -48,20 +48,20 @@ cue_playlist_open_stream(InputStream &is)
DetachedSong *
CuePlaylist::NextSong()
{
DetachedSong *song = parser.Get();
auto song = parser.Get();
if (song != nullptr)
return song;
return song.release();
const char *line;
while ((line = tis.ReadLine()) != nullptr) {
parser.Feed(line);
song = parser.Get();
if (song != nullptr)
return song;
return song.release();
}
parser.Finish();
return parser.Get();
return parser.Get().release();
}
static const char *const cue_playlist_suffixes[] = {

View File

@ -127,10 +127,10 @@ embcue_playlist_open_uri(const char *uri,
DetachedSong *
EmbeddedCuePlaylist::NextSong()
{
DetachedSong *song = parser->Get();
auto song = parser->Get();
if (song != nullptr) {
song->SetURI(filename);
return song;
return song.release();
}
while (*next != 0) {
@ -149,7 +149,7 @@ EmbeddedCuePlaylist::NextSong()
song = parser->Get();
if (song != nullptr) {
song->SetURI(filename);
return song;
return song.release();
}
}
@ -157,7 +157,7 @@ EmbeddedCuePlaylist::NextSong()
song = parser->Get();
if (song != nullptr)
song->SetURI(filename);
return song;
return song.release();
}
static const char *const embcue_playlist_suffixes[] = {