123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- #include "SPlaylistsEnumerator.h"
- #include "api__playlist.h"
- #include <bfc/nsguid.h>
- #include "Playlists.h"
- extern ScriptObjectController *script_root;
- extern PlaylistsEnumeratorScriptController playlistsEnumeratorController;
- // {C18F8E50-2C81-4001-9F46-FD942B07ECCD}
- static const GUID makiPlaylistsEnumeratorGUID =
- { 0xc18f8e50, 0x2c81, 0x4001, { 0x9f, 0x46, 0xfd, 0x94, 0x2b, 0x7, 0xec, 0xcd } };
- // -- Functions table -------------------------------------
- function_descriptor_struct PlaylistsEnumeratorScriptController::exportedFunction[] = {
- {L"GetCount", 0, (void *)SPlaylistsEnumerator::script_vcpu_GetCount },
- {L"GetFilename", 1, (void *)SPlaylistsEnumerator::script_vcpu_GetFilename },
- {L"GetTitle", 1, (void *)SPlaylistsEnumerator::script_vcpu_GetTitle },
- {L"GetLength", 1, (void *)SPlaylistsEnumerator::script_vcpu_GetLength },
- {L"GetNumItems", 1, (void *)SPlaylistsEnumerator::script_vcpu_GetNumItems },
- {L"GetGUID", 1, (void *)SPlaylistsEnumerator::script_vcpu_GetGUID },
- };
- // --------------------------------------------------------
- const wchar_t *PlaylistsEnumeratorScriptController::getClassName()
- {
- return L"PlaylistsEnumerator";
- }
- const wchar_t *PlaylistsEnumeratorScriptController::getAncestorClassName()
- {
- return L"Object";
- }
- ScriptObjectController *PlaylistsEnumeratorScriptController::getAncestorController()
- {
- return script_root;
- }
- ScriptObject *PlaylistsEnumeratorScriptController::instantiate()
- {
- SPlaylistsEnumerator *xd = new SPlaylistsEnumerator;
- ASSERT(xd != NULL);
- return xd->getScriptObject();
- }
- void PlaylistsEnumeratorScriptController::destroy( ScriptObject *o )
- {
- SPlaylistsEnumerator *xd = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- ASSERT( xd != NULL );
- delete xd;
- }
- void *PlaylistsEnumeratorScriptController::encapsulate( ScriptObject *o )
- {
- return NULL;
- }
- void PlaylistsEnumeratorScriptController::deencapsulate( void *o )
- {}
- int PlaylistsEnumeratorScriptController::getNumFunctions()
- {
- return sizeof( exportedFunction ) / sizeof( function_descriptor_struct );
- }
- const function_descriptor_struct *PlaylistsEnumeratorScriptController::getExportedFunctions()
- {
- return exportedFunction;
- }
- GUID PlaylistsEnumeratorScriptController::getClassGuid()
- {
- return makiPlaylistsEnumeratorGUID;
- }
- /* --- */
- SPlaylistsEnumerator::SPlaylistsEnumerator()
- {
- getScriptObject()->vcpu_setInterface( makiPlaylistsEnumeratorGUID, static_cast<SPlaylistsEnumerator *>( this ) );
- getScriptObject()->vcpu_setClassName( L"PlaylistsEnumerator" );
- getScriptObject()->vcpu_setController( &playlistsEnumeratorController );
- }
- SPlaylistsEnumerator::~SPlaylistsEnumerator()
- {
- //info.deleteAll();
- for (auto obj : info)
- {
- delete obj;
- }
- info.clear();
- }
- scriptVar SPlaylistsEnumerator::script_vcpu_GetCount( SCRIPT_FUNCTION_PARAMS, ScriptObject *o )
- {
- SCRIPT_FUNCTION_INIT;
- SPlaylistsEnumerator *enumerator = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- if ( enumerator )
- {
- return MAKE_SCRIPT_INT( (int)enumerator->info.size() );
- }
- return MAKE_SCRIPT_INT( 0 );
- }
- static const wchar_t *static_splaylistsenumerator_empty_string = L"";
- scriptVar SPlaylistsEnumerator::script_vcpu_GetFilename( SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar playlistNumber )
- {
- SCRIPT_FUNCTION_INIT;
- SPlaylistsEnumerator *enumerator = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- size_t i = GET_SCRIPT_INT( playlistNumber );
- if ( enumerator && i < enumerator->info.size() )
- {
- return MAKE_SCRIPT_STRING( enumerator->info[ i ]->filename );
- }
- return MAKE_SCRIPT_STRING( static_splaylistsenumerator_empty_string );
- }
- scriptVar SPlaylistsEnumerator::script_vcpu_GetTitle( SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar playlistNumber )
- {
- SCRIPT_FUNCTION_INIT;
- SPlaylistsEnumerator *enumerator = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- size_t i = GET_SCRIPT_INT( playlistNumber );
- if ( enumerator && i < enumerator->info.size() )
- {
- return MAKE_SCRIPT_STRING( enumerator->info[ i ]->title );
- }
- return MAKE_SCRIPT_STRING( static_splaylistsenumerator_empty_string );
- }
- scriptVar SPlaylistsEnumerator::script_vcpu_GetLength( SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar playlistNumber )
- {
- SCRIPT_FUNCTION_INIT;
- SPlaylistsEnumerator *enumerator = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- size_t i = GET_SCRIPT_INT( playlistNumber );
- if ( enumerator && i < enumerator->info.size() )
- {
- return MAKE_SCRIPT_INT( enumerator->info[ i ]->length );
- }
- return MAKE_SCRIPT_INT( -1 );
- }
- scriptVar SPlaylistsEnumerator::script_vcpu_GetNumItems( SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar playlistNumber )
- {
- SCRIPT_FUNCTION_INIT;
- SPlaylistsEnumerator *enumerator = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- size_t i = GET_SCRIPT_INT( playlistNumber );
- if ( enumerator && i < enumerator->info.size() )
- {
- return MAKE_SCRIPT_INT( enumerator->info[ i ]->numItems );
- }
- return MAKE_SCRIPT_INT( 0 );
- }
- static wchar_t static_splaylistsenumerator_guid_string[39];
- scriptVar SPlaylistsEnumerator::script_vcpu_GetGUID( SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar playlistNumber )
- {
- SCRIPT_FUNCTION_INIT;
- SPlaylistsEnumerator *enumerator = static_cast<SPlaylistsEnumerator *>( o->vcpu_getInterface( makiPlaylistsEnumeratorGUID ) );
- size_t i = GET_SCRIPT_INT( playlistNumber );
- if ( enumerator && i < enumerator->info.size() )
- {
- nsGUID::toCharW( enumerator->info[ i ]->guid, static_splaylistsenumerator_guid_string );
- return MAKE_SCRIPT_STRING( static_splaylistsenumerator_guid_string );
- }
- return MAKE_SCRIPT_STRING( static_splaylistsenumerator_empty_string );
- }
- void SPlaylistsEnumerator::Reserve( size_t count )
- {
- info.reserve( count );
- }
- void SPlaylistsEnumerator::AppendPlaylist( const PlaylistInfo &newPlaylist )
- {
- info.push_back( new PlaylistInfo( newPlaylist ) );
- }
|