diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/playlist/SPlaylistManager.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/playlist/SPlaylistManager.cpp')
-rw-r--r-- | Src/playlist/SPlaylistManager.cpp | 117 |
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; +} + |