+/*\r
+** implementation of libvlc playlist items object\r
+*/\r
+\r
+const NPUTF8 * const LibvlcPlaylistItemsNPObject::propertyNames[] = \r
+{\r
+ "count",\r
+};\r
+\r
+const int LibvlcPlaylistItemsNPObject::propertyCount = sizeof(LibvlcPlaylistItemsNPObject::propertyNames)/sizeof(NPUTF8 *);\r
+\r
+enum LibvlcPlaylistItemsNPObjectPropertyIds\r
+{\r
+ ID_playlistitems_count,\r
+};\r
+\r
+RuntimeNPObject::InvokeResult LibvlcPlaylistItemsNPObject::getProperty(int index, NPVariant &result)\r
+{\r
+ VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
+ if( p_plugin )\r
+ {\r
+ libvlc_exception_t ex;\r
+ libvlc_exception_init(&ex);\r
+\r
+ switch( index )\r
+ {\r
+ case ID_playlistitems_count:\r
+ {\r
+ int val = libvlc_playlist_items_count(p_plugin->getVLC(), &ex);\r
+ if( libvlc_exception_raised(&ex) )\r
+ {\r
+ NPN_SetException(this, libvlc_exception_get_message(&ex));\r
+ libvlc_exception_clear(&ex);\r
+ return INVOKERESULT_GENERIC_ERROR;\r
+ }\r
+ INT32_TO_NPVARIANT(val, result);\r
+ return INVOKERESULT_NO_ERROR;\r
+ }\r
+ default:\r
+ ;\r
+ }\r
+ }\r
+ return INVOKERESULT_GENERIC_ERROR;\r
+}\r
+\r
+const NPUTF8 * const LibvlcPlaylistItemsNPObject::methodNames[] =\r
+{\r
+ "clear",\r
+ "remove",\r
+};\r
+\r
+const int LibvlcPlaylistItemsNPObject::methodCount = sizeof(LibvlcPlaylistItemsNPObject::methodNames)/sizeof(NPUTF8 *);\r
+\r
+enum LibvlcPlaylistItemsNPObjectMethodIds\r
+{\r
+ ID_playlistitems_clear,\r
+ ID_playlistitems_remove,\r
+};\r
+\r
+RuntimeNPObject::InvokeResult LibvlcPlaylistItemsNPObject::invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result)\r
+{\r
+ VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
+ if( p_plugin )\r
+ {\r
+ libvlc_exception_t ex;\r
+ libvlc_exception_init(&ex);\r
+\r
+ switch( index )\r
+ {\r
+ case ID_playlistitems_clear:\r
+ if( argCount == 0 )\r
+ {\r
+ libvlc_playlist_clear(p_plugin->getVLC(), &ex);\r
+ if( libvlc_exception_raised(&ex) )\r
+ {\r
+ NPN_SetException(this, libvlc_exception_get_message(&ex));\r
+ libvlc_exception_clear(&ex);\r
+ return INVOKERESULT_GENERIC_ERROR;\r
+ }\r
+ else\r
+ {\r
+ VOID_TO_NPVARIANT(result);\r
+ return INVOKERESULT_NO_ERROR;\r
+ }\r
+ }\r
+ return INVOKERESULT_NO_SUCH_METHOD;\r
+ case ID_playlistitems_remove:\r
+ if( (argCount == 1) && isNumberValue(args[0]) )\r
+ {\r
+ libvlc_playlist_delete_item(p_plugin->getVLC(), numberValue(args[0]), &ex);\r
+ if( libvlc_exception_raised(&ex) )\r
+ {\r
+ NPN_SetException(this, libvlc_exception_get_message(&ex));\r
+ libvlc_exception_clear(&ex);\r
+ return INVOKERESULT_GENERIC_ERROR;\r
+ }\r
+ else\r
+ {\r
+ VOID_TO_NPVARIANT(result);\r
+ return INVOKERESULT_NO_ERROR;\r
+ }\r
+ }\r
+ return INVOKERESULT_NO_SUCH_METHOD;\r
+ default:\r
+ ;\r
+ }\r
+ }\r
+ return INVOKERESULT_GENERIC_ERROR;\r
+}\r
+\r