aboutsummaryrefslogtreecommitdiff
path: root/Src/playlist/SPlaylistManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/playlist/SPlaylistManager.cpp')
-rw-r--r--Src/playlist/SPlaylistManager.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/Src/playlist/SPlaylistManager.cpp b/Src/playlist/SPlaylistManager.cpp
new file mode 100644
index 00000000..896039d4
--- /dev/null
+++ b/Src/playlist/SPlaylistManager.cpp
@@ -0,0 +1,117 @@
+#include "SPlaylistManager.h"
+#include "SPlaylist.h"
+#include "api__playlist.h"
+#include "PlaylistManager.h"
+
+extern ScriptObjectController *script_root;
+extern PlaylistManagerScriptController playlistManagerController;
+
+// {C6207729-2600-4bb8-B562-2E0BC04E4416}
+static const GUID makePlaylistManagerGUID =
+{ 0xc6207729, 0x2600, 0x4bb8, { 0xb5, 0x62, 0x2e, 0xb, 0xc0, 0x4e, 0x44, 0x16 } };
+
+
+// -- Functions table -------------------------------------
+function_descriptor_struct PlaylistManagerScriptController::exportedFunction[] = {
+ {L"OpenPlaylist", 1, (void*)SPlaylistManager::script_vcpu_OpenPlaylist },
+ {L"SavePlaylist", 2, (void*)SPlaylistManager::script_vcpu_SavePlaylist },
+};
+// --------------------------------------------------------
+
+const wchar_t *PlaylistManagerScriptController::getClassName() {
+ return L"PlaylistManager";
+}
+
+const wchar_t *PlaylistManagerScriptController::getAncestorClassName() {
+ return L"Object";
+}
+
+ScriptObjectController *PlaylistManagerScriptController::getAncestorController()
+{
+ return script_root;
+}
+
+int PlaylistManagerScriptController::getInstantiable()
+{
+ return 0;
+}
+
+int PlaylistManagerScriptController::getReferenceable()
+{
+ return 0;
+}
+
+ScriptObject *PlaylistManagerScriptController::instantiate() {
+ SPlaylistManager *xd = new SPlaylistManager;
+ ASSERT(xd != NULL);
+ return xd->getScriptObject();
+}
+
+void PlaylistManagerScriptController::destroy(ScriptObject *o) {
+ SPlaylistManager *xd = static_cast<SPlaylistManager *>(o->vcpu_getInterface(makePlaylistManagerGUID));
+ ASSERT(xd != NULL);
+ delete xd;
+}
+
+void *PlaylistManagerScriptController::encapsulate(ScriptObject *o) {
+ return NULL;
+}
+
+void PlaylistManagerScriptController::deencapsulate(void *o) {
+}
+
+int PlaylistManagerScriptController::getNumFunctions() {
+ return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
+}
+
+const function_descriptor_struct *PlaylistManagerScriptController::getExportedFunctions() {
+ return exportedFunction;
+}
+
+GUID PlaylistManagerScriptController::getClassGuid() {
+ return makePlaylistManagerGUID;
+}
+
+/* --- */
+
+SPlaylistManager::SPlaylistManager()
+{
+ getScriptObject()->vcpu_setInterface(makePlaylistManagerGUID, static_cast<SPlaylistManager *>(this));
+ getScriptObject()->vcpu_setClassName(L"PlaylistManager");
+ getScriptObject()->vcpu_setController(&playlistManagerController);
+}
+
+scriptVar SPlaylistManager::script_vcpu_OpenPlaylist(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar scriptFilename)
+{
+ SCRIPT_FUNCTION_INIT;
+ const wchar_t *filename = GET_SCRIPT_STRING(scriptFilename);
+ if (filename && *filename)
+ {
+ SPlaylist *playlist = new SPlaylist;
+ if (playlistManager.Load(filename, &playlist->playlist) == PLAYLISTMANAGER_SUCCESS)
+ {
+ return MAKE_SCRIPT_OBJECT(playlist->getScriptObject());
+ }
+ else
+ {
+ delete playlist;
+ return MAKE_SCRIPT_OBJECT(0);
+ }
+ }
+
+ return MAKE_SCRIPT_OBJECT(0);
+}
+
+scriptVar SPlaylistManager::script_vcpu_SavePlaylist(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar scriptFilename, scriptVar scriptPlaylist)
+{
+ SCRIPT_FUNCTION_INIT;
+ const wchar_t *filename = GET_SCRIPT_STRING(scriptFilename);
+ SPlaylist *playlist = static_cast<SPlaylist *>(GET_SCRIPT_OBJECT_AS(scriptPlaylist, makiPlaylistGUID));
+ if (filename && *filename && playlist)
+ {
+ playlistManager.Save(filename, &playlist->playlist);
+ }
+
+ RETURN_SCRIPT_VOID;
+}
+