playlist/cue/CueParser: use std::unique_ptr
This commit is contained in:
		@@ -22,20 +22,12 @@
 | 
			
		||||
#include "util/Alloc.hxx"
 | 
			
		||||
#include "util/StringUtil.hxx"
 | 
			
		||||
#include "util/CharUtil.hxx"
 | 
			
		||||
#include "DetachedSong.hxx"
 | 
			
		||||
#include "tag/Tag.hxx"
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
CueParser::~CueParser()
 | 
			
		||||
{
 | 
			
		||||
	delete current;
 | 
			
		||||
	delete previous;
 | 
			
		||||
	delete finished;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *
 | 
			
		||||
cue_next_word(char *p, char **pp)
 | 
			
		||||
{
 | 
			
		||||
@@ -160,9 +152,9 @@ CueParser::Commit()
 | 
			
		||||
	assert(!current->GetTag().IsDefined());
 | 
			
		||||
	current->SetTag(song_tag.Commit());
 | 
			
		||||
 | 
			
		||||
	finished = previous;
 | 
			
		||||
	previous = current;
 | 
			
		||||
	current = nullptr;
 | 
			
		||||
	finished = std::move(previous);
 | 
			
		||||
	previous = std::move(current);
 | 
			
		||||
	current.reset();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -237,7 +229,7 @@ CueParser::Feed2(char *p)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		state = TRACK;
 | 
			
		||||
		current = new DetachedSong(filename);
 | 
			
		||||
		current.reset(new DetachedSong(filename));
 | 
			
		||||
		assert(!current->GetTag().IsDefined());
 | 
			
		||||
 | 
			
		||||
		song_tag = header_tag;
 | 
			
		||||
@@ -297,11 +289,9 @@ CueParser::Get()
 | 
			
		||||
		   deliver all remaining (partial) results */
 | 
			
		||||
		assert(current == nullptr);
 | 
			
		||||
 | 
			
		||||
		finished = previous;
 | 
			
		||||
		previous = nullptr;
 | 
			
		||||
		finished = std::move(previous);
 | 
			
		||||
		previous.reset();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	DetachedSong *song = finished;
 | 
			
		||||
	finished = nullptr;
 | 
			
		||||
	return song;
 | 
			
		||||
	return finished.release();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,12 @@
 | 
			
		||||
#define MPD_CUE_PARSER_HXX
 | 
			
		||||
 | 
			
		||||
#include "check.h"
 | 
			
		||||
#include "DetachedSong.hxx"
 | 
			
		||||
#include "tag/TagBuilder.hxx"
 | 
			
		||||
#include "Compiler.h"
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <memory>
 | 
			
		||||
 | 
			
		||||
class DetachedSong;
 | 
			
		||||
struct Tag;
 | 
			
		||||
@@ -74,19 +76,19 @@ class CueParser {
 | 
			
		||||
	/**
 | 
			
		||||
	 * The song currently being edited.
 | 
			
		||||
	 */
 | 
			
		||||
	DetachedSong *current = nullptr;
 | 
			
		||||
	std::unique_ptr<DetachedSong> current;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * The previous song.  It is remembered because its end_time
 | 
			
		||||
	 * will be set to the current song's start time.
 | 
			
		||||
	 */
 | 
			
		||||
	DetachedSong *previous = nullptr;
 | 
			
		||||
	std::unique_ptr<DetachedSong> previous;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * A song that is completely finished and can be returned to
 | 
			
		||||
	 * the caller via cue_parser_get().
 | 
			
		||||
	 */
 | 
			
		||||
	DetachedSong *finished = nullptr;
 | 
			
		||||
	std::unique_ptr<DetachedSong> finished;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Tracks whether cue_parser_finish() has been called.  If
 | 
			
		||||
@@ -96,8 +98,6 @@ class CueParser {
 | 
			
		||||
	bool end = false;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	~CueParser();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Feed a text line from the CUE file into the parser.  Call
 | 
			
		||||
	 * cue_parser_get() after this to see if a song has been finished.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user