mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-05 19:06:11 +00:00
Remove both copies of the 15-fold copies of the JSI_IGUIObject::getProperty and setProperty setting case handlers following the FromJSVal / ToJSVal template specializations implemented in
* JSI_GUIColor in9be8a560a9* bool ineec179a9a8* CGUISeries and CGUIList in26ae9d430a* primitives in636c719110* EAlign and EVAlign in0834d07462* ClientArea inb9f3c8557b* CColor in415939b59b* CGUISpriteInstance0a7d0ecdde* CPos ind6b93b3be6The removed JS_ReportError calls were redundant. This was SVN commit r22574.
This commit is contained in:
@@ -114,147 +114,14 @@ bool JSI_IGUIObject::getProperty(JSContext* cx, JS::HandleObject obj, JS::Handle
|
||||
ScriptInterface::ToJSVal(cx, vp, e->GetName());
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else if (e->SettingExists(propName))
|
||||
{
|
||||
// Retrieve the setting's type (and make sure it actually exists)
|
||||
EGUISettingType Type;
|
||||
if (e->GetSettingType(propName, Type) != PSRETURN_OK)
|
||||
{
|
||||
JS_ReportError(cx, "Invalid GUIObject property '%s'", propName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
// (All the cases are in {...} to avoid scoping problems)
|
||||
switch (Type)
|
||||
{
|
||||
case GUIST_bool:
|
||||
{
|
||||
bool value;
|
||||
GUI<bool>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_int:
|
||||
{
|
||||
i32 value;
|
||||
GUI<i32>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_uint:
|
||||
{
|
||||
u32 value;
|
||||
GUI<u32>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_float:
|
||||
{
|
||||
float value;
|
||||
GUI<float>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUIColor:
|
||||
{
|
||||
CGUIColor value;
|
||||
GUI<CGUIColor>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CPos:
|
||||
{
|
||||
CPos value;
|
||||
GUI<CPos>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CClientArea:
|
||||
{
|
||||
CClientArea value;
|
||||
GUI<CClientArea>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUIString:
|
||||
{
|
||||
CGUIString value;
|
||||
GUI<CGUIString>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CStr:
|
||||
{
|
||||
CStr value;
|
||||
GUI<CStr>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CStrW:
|
||||
{
|
||||
CStrW value;
|
||||
GUI<CStrW>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUISpriteInstance:
|
||||
{
|
||||
CGUISpriteInstance* value;
|
||||
GUI<CGUISpriteInstance>::GetSettingPointer(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, *value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_EAlign:
|
||||
{
|
||||
EAlign value;
|
||||
GUI<EAlign>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_EVAlign:
|
||||
{
|
||||
EVAlign value;
|
||||
GUI<EVAlign>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUIList:
|
||||
{
|
||||
CGUIList value;
|
||||
GUI<CGUIList>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUISeries:
|
||||
{
|
||||
CGUISeries value;
|
||||
GUI<CGUISeries>::GetSetting(e, propName, value);
|
||||
ScriptInterface::ToJSVal(cx, vp, value);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
JS_ReportError(cx, "Setting '%s' uses an unimplemented type", propName.c_str());
|
||||
DEBUG_WARN_ERR(ERR::LOGIC);
|
||||
return false;
|
||||
}
|
||||
|
||||
e->m_Settings[propName].m_ToJSVal(cx, vp);
|
||||
return true;
|
||||
}
|
||||
|
||||
JS_ReportError(cx, "Property '%s' does not exist!", propName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JSI_IGUIObject::setProperty(JSContext* cx, JS::HandleObject obj, JS::HandleId id, bool UNUSED(strict), JS::MutableHandleValue vp)
|
||||
@@ -300,186 +167,11 @@ bool JSI_IGUIObject::setProperty(JSContext* cx, JS::HandleObject obj, JS::Handle
|
||||
return true;
|
||||
}
|
||||
|
||||
// Retrieve the setting's type (and make sure it actually exists)
|
||||
EGUISettingType Type;
|
||||
if (e->GetSettingType(propName, Type) != PSRETURN_OK)
|
||||
{
|
||||
JS_ReportError(cx, "Invalid setting '%s'", propName.c_str());
|
||||
return true;
|
||||
}
|
||||
if (e->SettingExists(propName))
|
||||
return e->m_Settings[propName].m_FromJSVal(cx, vp);
|
||||
|
||||
switch (Type)
|
||||
{
|
||||
case GUIST_CStr:
|
||||
{
|
||||
CStr value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<CStr>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CStrW:
|
||||
{
|
||||
CStrW value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<CStrW>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUISpriteInstance:
|
||||
{
|
||||
CGUISpriteInstance value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<CGUISpriteInstance>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUIString:
|
||||
{
|
||||
CGUIString value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<CGUIString>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_EAlign:
|
||||
{
|
||||
EAlign a;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, a))
|
||||
return false;
|
||||
|
||||
GUI<EAlign>::SetSetting(e, propName, a);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_EVAlign:
|
||||
{
|
||||
EVAlign a;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, a))
|
||||
return false;
|
||||
|
||||
GUI<EVAlign>::SetSetting(e, propName, a);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_int:
|
||||
{
|
||||
i32 value;
|
||||
if (ScriptInterface::FromJSVal(cx, vp, value))
|
||||
GUI<i32>::SetSetting(e, propName, value);
|
||||
else
|
||||
{
|
||||
JS_ReportError(cx, "Cannot convert value to i32");
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_uint:
|
||||
{
|
||||
u32 value;
|
||||
if (ScriptInterface::FromJSVal(cx, vp, value))
|
||||
GUI<u32>::SetSetting(e, propName, value);
|
||||
else
|
||||
{
|
||||
JS_ReportError(cx, "Cannot convert value to u32");
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_float:
|
||||
{
|
||||
float value;
|
||||
if (ScriptInterface::FromJSVal(cx, vp, value))
|
||||
GUI<float>::SetSetting(e, propName, value);
|
||||
else
|
||||
{
|
||||
JS_ReportError(cx, "Cannot convert value to float");
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_bool:
|
||||
{
|
||||
bool value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<bool>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CClientArea:
|
||||
{
|
||||
CClientArea value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<CClientArea>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CPos:
|
||||
{
|
||||
CPos value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
|
||||
GUI<CPos>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUIColor:
|
||||
{
|
||||
CGUIColor value;
|
||||
if (!ScriptInterface::FromJSVal(cx, vp, value))
|
||||
return false;
|
||||
GUI<CGUIColor>::SetSetting(e, propName, value);
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUIList:
|
||||
{
|
||||
CGUIList list;
|
||||
if (ScriptInterface::FromJSVal(cx, vp, list))
|
||||
GUI<CGUIList>::SetSetting(e, propName, list);
|
||||
else
|
||||
{
|
||||
JS_ReportError(cx, "Failed to get list '%s'", propName.c_str());
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case GUIST_CGUISeries:
|
||||
{
|
||||
CGUISeries series;
|
||||
if (ScriptInterface::FromJSVal(cx, vp, series))
|
||||
GUI<CGUISeries>::SetSetting(e, propName, series);
|
||||
else
|
||||
{
|
||||
JS_ReportError(cx, "Invalid value for chart series '%s'", propName.c_str());
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
JS_ReportError(cx, "Setting '%s' uses an unimplemented type", propName.c_str());
|
||||
break;
|
||||
}
|
||||
|
||||
return !JS_IsExceptionPending(cx);
|
||||
JS_ReportError(cx, "Property '%s' does not exist!", propName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
void JSI_IGUIObject::init(ScriptInterface& scriptInterface)
|
||||
|
||||
Reference in New Issue
Block a user