aboutsummaryrefslogtreecommitdiff
path: root/Src/playlist/ifc_playlistloadercallbackT.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/playlist/ifc_playlistloadercallbackT.h')
-rw-r--r--Src/playlist/ifc_playlistloadercallbackT.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/Src/playlist/ifc_playlistloadercallbackT.h b/Src/playlist/ifc_playlistloadercallbackT.h
new file mode 100644
index 00000000..7ee6366f
--- /dev/null
+++ b/Src/playlist/ifc_playlistloadercallbackT.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "ifc_playlistloadercallback.h"
+
+template <class T>
+class ifc_playlistloadercallbackT : public ifc_playlistloadercallback
+{
+protected:
+ ifc_playlistloadercallbackT() {}
+ ~ifc_playlistloadercallbackT() {}
+protected:
+ // return 0 to continue enumeration, or 1 to quit
+
+ // title will be NULL if no title found, length will be -1
+ int OnFile(const wchar_t *filename, const wchar_t *title, int lengthInMS, ifc_plentryinfo *info) { return LOAD_ABORT; }
+ // numEntries is just a hint, there is no gaurantee. 0 means "don't know"
+ int OnPlaylistInfo(const wchar_t *playlistName, size_t numEntries, ifc_plentryinfo *info) { return LOAD_ABORT; }
+ // return 0 to use playlist file path as base (or just don't implement)
+ const wchar_t *GetBasePath() { return 0; }
+
+#define CBCLASS T
+#define CBCLASST ifc_playlistloadercallbackT<T>
+ START_DISPATCH_INLINE;
+ CBT(IFC_PLAYLISTLOADERCALLBACK_ONFILE_RET, OnFile);
+ CBT(IFC_PLAYLISTLOADERCALLBACK_ONPLAYLISTINFO_RET, OnPlaylistInfo);
+ CBT(IFC_PLAYLISTLOADERCALLBACK_GETBASEPATH, GetBasePath);
+ END_DISPATCH;
+#undef CBCLASS
+#undef CBCLASST
+};