summaryrefslogtreecommitdiff
path: root/src/decoder/plugins/SidplayDecoderPlugin.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2016-11-22 13:17:31 +0100
committerMax Kellermann <max@musicpd.org>2016-11-22 13:17:31 +0100
commitbf78b7f81525c819b3711d348d6f7fedfa940bd7 (patch)
treeb301c710a4c29e29b36e088eb4afc365c3f927a3 /src/decoder/plugins/SidplayDecoderPlugin.cxx
parentffb9874d84727d5375b342c7cc9c55ee3971d410 (diff)
decoder/sidplay: use template to eliminate duplicate code
Diffstat (limited to 'src/decoder/plugins/SidplayDecoderPlugin.cxx')
-rw-r--r--src/decoder/plugins/SidplayDecoderPlugin.cxx28
1 files changed, 6 insertions, 22 deletions
diff --git a/src/decoder/plugins/SidplayDecoderPlugin.cxx b/src/decoder/plugins/SidplayDecoderPlugin.cxx
index e1bb4ffbb..151a73914 100644
--- a/src/decoder/plugins/SidplayDecoderPlugin.cxx
+++ b/src/decoder/plugins/SidplayDecoderPlugin.cxx
@@ -142,10 +142,13 @@ ParseContainerPath(Path path_fs)
return { path_fs.GetDirectoryName(), track };
}
-#ifdef HAVE_SIDPLAYFP
-
+/**
+ * This is a template, because libsidplay requires SidTuneMod while
+ * libsidplayfp requires just a plain Sidtune.
+ */
+template<typename T>
static SignedSongTime
-get_song_length(SidTune &tune)
+get_song_length(T &tune)
{
assert(tune.getStatus());
@@ -159,25 +162,6 @@ get_song_length(SidTune &tune)
return SignedSongTime::FromS(length);
}
-#else
-
-static SignedSongTime
-get_song_length(SidTuneMod &tune)
-{
- assert(tune);
-
- if (songlength_database == nullptr)
- return SignedSongTime::Negative();
-
- const auto length = songlength_database->length(tune);
- if (length < 0)
- return SignedSongTime::Negative();
-
- return SignedSongTime::FromS(length);
-}
-
-#endif
-
static void
sidplay_file_decode(DecoderClient &client, Path path_fs)
{