diff --git a/source/scripting/ScriptingHost.cpp b/source/scripting/ScriptingHost.cpp index 14bc4b2bfb..869fd3ecf4 100755 --- a/source/scripting/ScriptingHost.cpp +++ b/source/scripting/ScriptingHost.cpp @@ -126,7 +126,7 @@ jsval ScriptingHost::CallFunction(const std::string & functionName, jsval * para return result; } -jsval ScriptingHost::ExecuteScript( const CStr16& script, const CStr16& calledFrom, JSObject* contextObject ) +jsval ScriptingHost::ExecuteScript(const CStrW& script, const CStrW& calledFrom, JSObject* contextObject ) { jsval rval; @@ -229,6 +229,8 @@ JSObject * ScriptingHost::CreateCustomObject(const std::string & typeName) } + + void ScriptingHost::SetObjectProperty(JSObject * object, const std::string & propertyName, jsval value) { JS_SetProperty(m_Context, object, propertyName.c_str(), &value); @@ -241,6 +243,34 @@ jsval ScriptingHost::GetObjectProperty( JSObject* object, const std::string& pro return( vp ); } + + +void ScriptingHost::SetObjectProperty_Double(JSObject* object, const char* propertyName, double value) +{ + jsdouble* d = JS_NewDouble(m_Context, value); + if (! d) + throw PSERROR_Scripting_ConversionFailed(); + + jsval v = DOUBLE_TO_JSVAL(d); + + if (! JS_SetProperty(m_Context, object, propertyName, &v)) + throw PSERROR_Scripting_ConversionFailed(); +} + +double ScriptingHost::GetObjectProperty_Double(JSObject* object, const char* propertyName) +{ + jsval v; + double d; + + if (! JS_GetProperty(m_Context, object, propertyName, &v)) + throw PSERROR_Scripting_ConversionFailed(); + if (! JS_ValueToNumber(m_Context, v, &d)) + throw PSERROR_Scripting_ConversionFailed(); + return d; +} + + + void ScriptingHost::SetGlobal(const std::string &globalName, jsval value) { JS_SetProperty(m_Context, m_GlobalObject, globalName.c_str(), &value); diff --git a/source/scripting/ScriptingHost.h b/source/scripting/ScriptingHost.h index 687b63531e..85451250ec 100755 --- a/source/scripting/ScriptingHost.h +++ b/source/scripting/ScriptingHost.h @@ -84,7 +84,7 @@ public: jsval CallFunction(const std::string & functionName, jsval * params, int numParams); - jsval ScriptingHost::ExecuteScript( const CStr16& script, const CStr16& calledFrom = CStr16( L"Console" ), JSObject* contextObject = NULL ); + jsval ScriptingHost::ExecuteScript(const CStrW& script, const CStrW& calledFrom = CStrW( L"Console" ), JSObject* contextObject = NULL ); void RegisterFunction(const std::string & functionName, JSNative function, int numArgs); @@ -98,6 +98,9 @@ public: void SetObjectProperty(JSObject * object, const std::string & propertyName, jsval value); jsval GetObjectProperty(JSObject * object, const std::string & propertyName); + void SetObjectProperty_Double(JSObject* object, const char* propertyName, double value); + double GetObjectProperty_Double(JSObject* object, const char* propertyName); + void SetGlobal(const std::string& globalName, jsval value); jsval GetGlobal(const std::string& globalName);