From de9f0dc91023d1383be78a68c71c30aea35f470e Mon Sep 17 00:00:00 2001
From: Max Kellermann <max.kellermann@gmail.com>
Date: Fri, 12 Jul 2024 15:59:04 +0200
Subject: [PATCH] playlist/Plugin: convert _init() and _finish() to methods

---
 src/playlist/PlaylistPlugin.hxx   | 54 +++++++++++++------------------
 src/playlist/PlaylistRegistry.cxx |  5 ++-
 2 files changed, 25 insertions(+), 34 deletions(-)

diff --git a/src/playlist/PlaylistPlugin.hxx b/src/playlist/PlaylistPlugin.hxx
index 8cf2b91ec..916cc2f5d 100644
--- a/src/playlist/PlaylistPlugin.hxx
+++ b/src/playlist/PlaylistPlugin.hxx
@@ -1,8 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 // Copyright The Music Player Daemon Project
 
-#ifndef MPD_PLAYLIST_PLUGIN_HXX
-#define MPD_PLAYLIST_PLUGIN_HXX
+#pragma once
 
 #include "input/Ptr.hxx"
 #include "thread/Mutex.hxx"
@@ -117,33 +116,26 @@ struct PlaylistPlugin {
 	 */
 	[[gnu::pure]]
 	bool SupportsMimeType(std::string_view mime_type) const noexcept;
+
+	/**
+	 * Initialize the plugin.
+	 *
+	 * @param block a configuration block for this plugin, or nullptr if none
+	 * is configured
+	 * @return true if the plugin was initialized successfully, false if
+	 * the plugin is not available
+	 */
+	bool Init(const ConfigBlock &block) const {
+		return init != nullptr
+		       ? init(block)
+		       : true;
+	}
+
+	/**
+	 * Deinitialize the plugin which was initialized successfully.
+	 */
+	void Finish() const noexcept {
+		if (finish != nullptr)
+			finish();
+	}
 };
-
-/**
- * Initialize a plugin.
- *
- * @param block a configuration block for this plugin, or nullptr if none
- * is configured
- * @return true if the plugin was initialized successfully, false if
- * the plugin is not available
- */
-static inline bool
-playlist_plugin_init(const PlaylistPlugin *plugin,
-		     const ConfigBlock &block)
-{
-	return plugin->init != nullptr
-		? plugin->init(block)
-		: true;
-}
-
-/**
- * Deinitialize a plugin which was initialized successfully.
- */
-static inline void
-playlist_plugin_finish(const PlaylistPlugin *plugin) noexcept
-{
-	if (plugin->finish != nullptr)
-		plugin->finish();
-}
-
-#endif
diff --git a/src/playlist/PlaylistRegistry.cxx b/src/playlist/PlaylistRegistry.cxx
index 4a5e97594..72dabb480 100644
--- a/src/playlist/PlaylistRegistry.cxx
+++ b/src/playlist/PlaylistRegistry.cxx
@@ -84,8 +84,7 @@ playlist_list_global_init(const ConfigData &config)
 		if (param != nullptr)
 			param->SetUsed();
 
-		playlist_plugins_enabled[i] =
-			playlist_plugin_init(playlist_plugins[i], *param);
+		playlist_plugins_enabled[i] = playlist_plugins[i]->Init(*param);
 
 		playlist_plugins_as_folder[i] =
 			param->GetBlockValue("as_directory",
@@ -97,7 +96,7 @@ void
 playlist_list_global_finish() noexcept
 {
 	for (const auto &plugin : GetEnabledPlaylistPlugins()) {
-		playlist_plugin_finish(&plugin);
+		plugin.Finish();
 	}
 }