\r
const int LibvlcRootNPObject::propertyCount = sizeof(LibvlcRootNPObject::propertyNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcRootNPObject::getProperty(int index, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcRootNPObject::getProperty(int index, NPVariant &result)\r
{\r
switch( index )\r
{\r
case ID_audio:\r
- OBJECT_TO_NPVARIANT(NPN_RetainObject(audioObj), *result);\r
+ OBJECT_TO_NPVARIANT(NPN_RetainObject(audioObj), result);\r
return INVOKERESULT_NO_ERROR;\r
case ID_input:\r
- OBJECT_TO_NPVARIANT(NPN_RetainObject(inputObj), *result);\r
+ OBJECT_TO_NPVARIANT(NPN_RetainObject(inputObj), result);\r
return INVOKERESULT_NO_ERROR;\r
case ID_playlist:\r
- OBJECT_TO_NPVARIANT(NPN_RetainObject(playlistObj), *result);\r
+ OBJECT_TO_NPVARIANT(NPN_RetainObject(playlistObj), result);\r
return INVOKERESULT_NO_ERROR;\r
case ID_video:\r
- OBJECT_TO_NPVARIANT(NPN_RetainObject(videoObj), *result);\r
+ OBJECT_TO_NPVARIANT(NPN_RetainObject(videoObj), result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
return INVOKERESULT_GENERIC_ERROR;\r
\r
const int LibvlcAudioNPObject::propertyCount = sizeof(LibvlcAudioNPObject::propertyNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcAudioNPObject::getProperty(int index, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcAudioNPObject::getProperty(int index, NPVariant &result)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- BOOLEAN_TO_NPVARIANT(muted, *result);\r
+ BOOLEAN_TO_NPVARIANT(muted, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_volume:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- INT32_TO_NPVARIANT(volume, *result);\r
+ INT32_TO_NPVARIANT(volume, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
\r
-RuntimeNPObject::InvokeResult LibvlcAudioNPObject::setProperty(int index, const NPVariant *value)\r
+RuntimeNPObject::InvokeResult LibvlcAudioNPObject::setProperty(int index, const NPVariant &value)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
switch( index )\r
{\r
case ID_mute:\r
- if( NPVARIANT_IS_BOOLEAN(*value) )\r
+ if( NPVARIANT_IS_BOOLEAN(value) )\r
{\r
libvlc_audio_set_mute(p_plugin->getVLC(),\r
- NPVARIANT_TO_BOOLEAN(*value), &ex);\r
+ NPVARIANT_TO_BOOLEAN(value), &ex);\r
if( libvlc_exception_raised(&ex) )\r
{\r
NPN_SetException(this, libvlc_exception_get_message(&ex));\r
}\r
return INVOKERESULT_INVALID_VALUE;\r
case ID_volume:\r
- if( isNumberValue(*value) )\r
+ if( isNumberValue(value) )\r
{\r
libvlc_audio_set_volume(p_plugin->getVLC(),\r
- numberValue(*value), &ex);\r
+ numberValue(value), &ex);\r
if( libvlc_exception_raised(&ex) )\r
{\r
NPN_SetException(this, libvlc_exception_get_message(&ex));\r
\r
const int LibvlcAudioNPObject::methodCount = sizeof(LibvlcAudioNPObject::methodNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcAudioNPObject::invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcAudioNPObject::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
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
\r
const int LibvlcInputNPObject::propertyCount = sizeof(LibvlcInputNPObject::propertyNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcInputNPObject::getProperty(int index, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcInputNPObject::getProperty(int index, NPVariant &result)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- DOUBLE_TO_NPVARIANT(val, *result);\r
+ DOUBLE_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_position:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- DOUBLE_TO_NPVARIANT(val, *result);\r
+ DOUBLE_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_time:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- DOUBLE_TO_NPVARIANT(val, *result);\r
+ DOUBLE_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_fps:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- DOUBLE_TO_NPVARIANT(val, *result);\r
+ DOUBLE_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_hasvout:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- BOOLEAN_TO_NPVARIANT(val, *result);\r
+ BOOLEAN_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
\r
-RuntimeNPObject::InvokeResult LibvlcInputNPObject::setProperty(int index, const NPVariant *value)\r
+RuntimeNPObject::InvokeResult LibvlcInputNPObject::setProperty(int index, const NPVariant &value)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
{\r
case ID_position:\r
{\r
- if( ! NPVARIANT_IS_DOUBLE(*value) )\r
+ if( ! NPVARIANT_IS_DOUBLE(value) )\r
{\r
libvlc_input_free(p_input);\r
return INVOKERESULT_INVALID_VALUE;\r
}\r
\r
- float val = (float)NPVARIANT_TO_DOUBLE(*value);\r
+ float val = (float)NPVARIANT_TO_DOUBLE(value);\r
libvlc_input_set_position(p_input, val, &ex);\r
libvlc_input_free(p_input);\r
if( libvlc_exception_raised(&ex) )\r
case ID_time:\r
{\r
vlc_int64_t val;\r
- if( NPVARIANT_IS_INT32(*value) )\r
- val = (vlc_int64_t)NPVARIANT_TO_INT32(*value);\r
- else if( NPVARIANT_IS_DOUBLE(*value) )\r
- val = (vlc_int64_t)NPVARIANT_TO_DOUBLE(*value);\r
+ if( NPVARIANT_IS_INT32(value) )\r
+ val = (vlc_int64_t)NPVARIANT_TO_INT32(value);\r
+ else if( NPVARIANT_IS_DOUBLE(value) )\r
+ val = (vlc_int64_t)NPVARIANT_TO_DOUBLE(value);\r
else\r
{\r
libvlc_input_free(p_input);\r
\r
const int LibvlcPlaylistNPObject::propertyCount = sizeof(LibvlcPlaylistNPObject::propertyNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcPlaylistNPObject::getProperty(int index, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcPlaylistNPObject::getProperty(int index, NPVariant &result)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- INT32_TO_NPVARIANT(val, *result);\r
+ INT32_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_isplaying:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- BOOLEAN_TO_NPVARIANT(val, *result);\r
+ BOOLEAN_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
\r
const int LibvlcPlaylistNPObject::methodCount = sizeof(LibvlcPlaylistNPObject::methodNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcPlaylistNPObject::invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcPlaylistNPObject::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
switch( index )\r
{\r
case ID_add:\r
- if( (argCount == 1) && NPVARIANT_IS_STRING(args[0]) )\r
+ {\r
+ char *url = NULL;\r
+ char *name = NULL;\r
+ int i_options = 0;\r
+ char** ppsz_options = NULL;\r
+\r
+ if( (argCount < 1) || (argCount > 3) )\r
+ return INVOKERESULT_NO_SUCH_METHOD;\r
+\r
+ // grab URL\r
+ if( NPVARIANT_IS_STRING(args[0]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
-\r
char *url = p_plugin->getAbsoluteURL(s);\r
delete s;\r
if( ! url )\r
// what happened ?\r
return INVOKERESULT_GENERIC_ERROR;\r
- \r
- int item = libvlc_playlist_add(p_plugin->getVLC(), url, NULL, &ex);\r
- free(url);\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
- INT32_TO_NPVARIANT(item, *result);\r
- return INVOKERESULT_NO_ERROR;\r
- }\r
}\r
else\r
return INVOKERESULT_OUT_OF_MEMORY;\r
}\r
- return INVOKERESULT_NO_SUCH_METHOD;\r
+ else\r
+ return INVOKERESULT_NO_SUCH_METHOD;\r
+\r
+ // grab name if available\r
+ if( argCount > 1 )\r
+ {\r
+ if( NPVARIANT_IS_NULL(args[1]) )\r
+ {\r
+ // do nothing\r
+ }\r
+ else if( NPVARIANT_IS_STRING(args[1]) )\r
+ {\r
+ name = stringValue(NPVARIANT_TO_STRING(args[0]));\r
+ }\r
+ else\r
+ return INVOKERESULT_NO_SUCH_METHOD;\r
+ }\r
+\r
+ // grab options if available\r
+ if( argCount > 2 )\r
+ {\r
+ if( NPVARIANT_IS_NULL(args[2]) )\r
+ {\r
+ // do nothing\r
+ }\r
+ else if( NPVARIANT_IS_STRING(args[2]) )\r
+ {\r
+ parseOptions(NPVARIANT_TO_STRING(args[0]), &i_options, &ppsz_options);\r
+\r
+ }\r
+ else if( NPVARIANT_IS_OBJECT(args[3]) )\r
+ {\r
+ parseOptions(NPVARIANT_TO_OBJECT(args[0]), &i_options, &ppsz_options);\r
+ }\r
+ }\r
+\r
+ int item = libvlc_playlist_add_extended(p_plugin->getVLC(),\r
+ url,\r
+ name,\r
+ i_options,\r
+ const_cast<const char **>(ppsz_options),\r
+ &ex);\r
+ delete url;\r
+ delete name;\r
+ for( int i=0; i< i_options; ++i )\r
+ {\r
+ delete ppsz_options[i];\r
+ }\r
+ delete ppsz_options;\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
+ INT32_TO_NPVARIANT(item, result);\r
+ return INVOKERESULT_NO_ERROR;\r
+ }\r
+ }\r
case ID_play:\r
if( argCount == 0 )\r
{\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
+ \r
+void LibvlcPlaylistNPObject::parseOptions(const NPString &s, int *i_options, char*** ppsz_options)\r
+{\r
+ if( s.utf8length )\r
+ {\r
+ char *val = stringValue(s);\r
+ if( val )\r
+ {\r
+ long capacity = 16;\r
+ char **options = (char **)malloc(capacity*sizeof(char *));\r
+ if( options )\r
+ {\r
+ int nOptions = 0;\r
+\r
+ char *end = val + s.utf8length;\r
+ while( val < end )\r
+ {\r
+ // skip leading blanks\r
+ while( (val < end)\r
+ && ((*val == ' ' ) || (*val != '\t')) )\r
+ ++val;\r
+\r
+ char *start = val;\r
+ // skip till we get a blank character\r
+ while( (val < end)\r
+ && (*val != ' ' )\r
+ && (*val != '\t') )\r
+ {\r
+ char c = *(val++);\r
+ if( ('\'' == c) || ('"' == c) )\r
+ {\r
+ // skip till end of string\r
+ while( (val < end) && (*(val++) != c ) );\r
+ }\r
+ }\r
+\r
+ if( val > start )\r
+ {\r
+ if( nOptions == capacity )\r
+ {\r
+ capacity += 16;\r
+ char **moreOptions = (char **)realloc(options, capacity*sizeof(char*)); \r
+ if( ! moreOptions )\r
+ {\r
+ /* failed to allocate more memory */\r
+ delete val;\r
+ /* return what we got so far */\r
+ *i_options = nOptions;\r
+ *ppsz_options = options;\r
+ break;\r
+ }\r
+ options = moreOptions;\r
+ }\r
+ *(val++) = '\0';\r
+ options[nOptions++] = strdup(start);\r
+ }\r
+ else\r
+ // must be end of string\r
+ break;\r
+ }\r
+ *i_options = nOptions;\r
+ *ppsz_options = options;\r
+ }\r
+ delete val;\r
+ }\r
+ }\r
+}\r
+\r
+void LibvlcPlaylistNPObject::parseOptions(NPObject *obj, int *i_options, char*** ppsz_options)\r
+{\r
+ NPIdentifier name = NPN_GetStringIdentifier("length");\r
+ /* we are expecting to have a Javascript Array object */\r
+ if( NPN_HasProperty(_instance, obj, name) )\r
+ {\r
+ NPVariant value;\r
+ if( NPN_GetProperty(_instance, obj, name, &value) )\r
+ {\r
+ int count = numberValue(value);\r
+ NPN_ReleaseVariantValue(&value);\r
+ if( count )\r
+ {\r
+ long capacity = 16;\r
+ char **options = (char **)malloc(capacity*sizeof(char *));\r
+ if( options )\r
+ {\r
+ int nOptions = 0;\r
+\r
+ while( nOptions < count )\r
+ {\r
+ name = NPN_GetIntIdentifier(nOptions);\r
+ if( ! NPN_HasProperty(_instance, obj, name) )\r
+ /* return what we got so far */\r
+ break;\r
+\r
+ if( ! NPN_GetProperty(_instance, obj, name, &value) )\r
+ /* return what we got so far */\r
+ break;\r
+\r
+ if( ! NPVARIANT_IS_STRING(value) )\r
+ {\r
+ /* return what we got so far */\r
+ NPN_ReleaseVariantValue(&value);\r
+ break;\r
+ }\r
+\r
+ if( nOptions == capacity )\r
+ {\r
+ capacity += 16;\r
+ char **moreOptions = (char **)realloc(options, capacity*sizeof(char*)); \r
+ if( ! moreOptions )\r
+ {\r
+ /* failed to allocate more memory */\r
+ NPN_ReleaseVariantValue(&value);\r
+ /* return what we got so far */\r
+ *i_options = nOptions;\r
+ *ppsz_options = options;\r
+ break;\r
+ }\r
+ options = moreOptions;\r
+ }\r
+\r
+ options[nOptions++] = stringValue(value);\r
+ }\r
+ *i_options = nOptions;\r
+ *ppsz_options = options;\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
\r
/*\r
** implementation of libvlc video object\r
\r
const int LibvlcVideoNPObject::propertyCount = sizeof(LibvlcVideoNPObject::propertyNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcVideoNPObject::getProperty(int index, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcVideoNPObject::getProperty(int index, NPVariant &result)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- BOOLEAN_TO_NPVARIANT(val, *result);\r
+ BOOLEAN_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_height:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- INT32_TO_NPVARIANT(val, *result);\r
+ INT32_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
case ID_width:\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- INT32_TO_NPVARIANT(val, *result);\r
+ INT32_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
\r
-RuntimeNPObject::InvokeResult LibvlcVideoNPObject::setProperty(int index, const NPVariant *value)\r
+RuntimeNPObject::InvokeResult LibvlcVideoNPObject::setProperty(int index, const NPVariant &value)\r
{\r
VlcPlugin *p_plugin = reinterpret_cast<VlcPlugin *>(_instance->pdata);\r
if( p_plugin )\r
{\r
case ID_fullscreen:\r
{\r
- if( ! NPVARIANT_IS_BOOLEAN(*value) )\r
+ if( ! NPVARIANT_IS_BOOLEAN(value) )\r
{\r
libvlc_input_free(p_input);\r
return INVOKERESULT_INVALID_VALUE;\r
}\r
\r
- int val = NPVARIANT_TO_BOOLEAN(*value);\r
+ int val = NPVARIANT_TO_BOOLEAN(value);\r
libvlc_set_fullscreen(p_input, val, &ex);\r
libvlc_input_free(p_input);\r
if( libvlc_exception_raised(&ex) )\r
\r
const int LibvlcVideoNPObject::methodCount = sizeof(LibvlcVideoNPObject::methodNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult LibvlcVideoNPObject::invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant *result)\r
+RuntimeNPObject::InvokeResult LibvlcVideoNPObject::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
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
\r
const int VlcNPObject::methodCount = sizeof(VlcNPObject::methodNames)/sizeof(NPUTF8 *);\r
\r
-RuntimeNPObject::InvokeResult VlcNPObject::invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant *result)\r
+RuntimeNPObject::InvokeResult VlcNPObject::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
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- INT32_TO_NPVARIANT(val, *result);\r
+ INT32_TO_NPVARIANT(val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
case ID_get_int_variable:\r
if( (argCount == 1) && NPVARIANT_IS_STRING(args[0]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
int vlc_id = libvlc_get_vlc_id(p_plugin->getVLC());\r
vlc_value_t val;\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
if( VLC_SUCCESS == VLC_VariableGet(vlc_id, s, &val) )\r
{\r
delete s;\r
- INT32_TO_NPVARIANT(val.i_int, *result);\r
+ INT32_TO_NPVARIANT(val.i_int, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r
&& NPVARIANT_IS_STRING(args[0])\r
&& isNumberValue(args[1]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
int vlc_id = libvlc_get_vlc_id(p_plugin->getVLC());\r
vlc_value_t val;\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
val.i_int = numberValue(args[1]);\r
if( VLC_SUCCESS == VLC_VariableSet(vlc_id, s, val) )\r
{\r
delete s;\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r
case ID_get_bool_variable:\r
if( (argCount == 1) && NPVARIANT_IS_STRING(args[0]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
int vlc_id = libvlc_get_vlc_id(p_plugin->getVLC());\r
vlc_value_t val;\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
if( VLC_SUCCESS == VLC_VariableGet(vlc_id, s, &val) )\r
{\r
delete s;\r
- BOOLEAN_TO_NPVARIANT(val.b_bool, *result);\r
+ BOOLEAN_TO_NPVARIANT(val.b_bool, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r
&& NPVARIANT_IS_STRING(args[0])\r
&& NPVARIANT_IS_BOOLEAN(args[1]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
int vlc_id = libvlc_get_vlc_id(p_plugin->getVLC());\r
vlc_value_t val;\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
val.b_bool = NPVARIANT_TO_BOOLEAN(args[1]);\r
if( VLC_SUCCESS == VLC_VariableSet(vlc_id, s, val) )\r
{\r
delete s;\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r
case ID_get_str_variable:\r
if( (argCount == 1) && NPVARIANT_IS_STRING(args[0]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
int vlc_id = libvlc_get_vlc_id(p_plugin->getVLC());\r
vlc_value_t val;\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
if( VLC_SUCCESS == VLC_VariableGet(vlc_id, s, &val) )\r
{\r
delete s;\r
if( retval )\r
{\r
memcpy(retval, val.psz_string, len);\r
- STRINGN_TO_NPVARIANT(retval, len, *result);\r
+ STRINGN_TO_NPVARIANT(retval, len, result);\r
free(val.psz_string);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r
{\r
/* null string */\r
- STRINGN_TO_NPVARIANT(NULL, 0, *result);\r
+ STRINGN_TO_NPVARIANT(NULL, 0, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
&& NPVARIANT_IS_STRING(args[0])\r
&& NPVARIANT_IS_STRING(args[1]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
int vlc_id = libvlc_get_vlc_id(p_plugin->getVLC());\r
vlc_value_t val;\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
- const NPString &v = NPVARIANT_TO_STRING(args[1]);\r
- val.psz_string = new NPUTF8[v.utf8length+1];\r
+ val.psz_string = stringValue(NPVARIANT_TO_STRING(args[1]));\r
if( val.psz_string )\r
{\r
- strncpy(val.psz_string, v.utf8characters, v.utf8length);\r
- val.psz_string[v.utf8length] = '\0';\r
if( VLC_SUCCESS == VLC_VariableSet(vlc_id, s, val) )\r
{\r
delete s;\r
delete val.psz_string;\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
case ID_add_item:\r
if( (argCount == 1) && NPVARIANT_IS_STRING(args[0]) )\r
{\r
- const NPString &name = NPVARIANT_TO_STRING(args[0]);\r
- NPUTF8 *s = new NPUTF8[name.utf8length+1];\r
+ char *s = stringValue(NPVARIANT_TO_STRING(args[0]));\r
if( s )\r
{\r
- strncpy(s, name.utf8characters, name.utf8length);\r
- s[name.utf8length] = '\0';\r
-\r
char *url = p_plugin->getAbsoluteURL(s);\r
delete s;\r
if( ! url )\r
}\r
else\r
{\r
- INT32_TO_NPVARIANT(item, *result);\r
+ INT32_TO_NPVARIANT(item, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- BOOLEAN_TO_NPVARIANT(isplaying, *result);\r
+ BOOLEAN_TO_NPVARIANT(isplaying, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- INT32_TO_NPVARIANT((uint32_t)(val/1000LL), *result);\r
+ INT32_TO_NPVARIANT((uint32_t)(val/1000LL), result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- DOUBLE_TO_NPVARIANT((double)val, *result);\r
+ DOUBLE_TO_NPVARIANT((double)val, result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
}\r
else\r
{\r
- DOUBLE_TO_NPVARIANT((uint32_t)(val/1000LL), *result);\r
+ DOUBLE_TO_NPVARIANT((uint32_t)(val/1000LL), result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
}\r
libvlc_exception_clear(&ex);\r
return INVOKERESULT_GENERIC_ERROR;\r
}\r
- VOID_TO_NPVARIANT(*result);\r
+ VOID_TO_NPVARIANT(result);\r
return INVOKERESULT_NO_ERROR;\r
}\r
else\r