1
0
forked from 0ad/0ad

CGUISeries and CGUIList specializations for ToJSVal / FromJSVal to make the JSI_IGUIObject case handling agnostic of implementation specifics, refs 4d367109c3, 977a5c7ca2, 2bae30c454.

This was SVN commit r22539.
This commit is contained in:
elexis 2019-07-24 01:40:30 +00:00
parent eec179a9a8
commit 26ae9d430a
2 changed files with 26 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2017 Wildfire Games.
/* Copyright (C) 2019 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@ -19,6 +19,8 @@
#include "scriptinterface/ScriptConversions.h"
#include "gui/CGUIList.h"
#include "gui/CGUISeries.h"
#include "gui/IGUIObject.h"
#include "lib/external_libraries/libsdl.h"
#include "ps/Hotkey.h"
@ -138,8 +140,26 @@ template<> bool ScriptInterface::FromJSVal<CGUIString>(JSContext* cx, JS::Handle
return true;
}
// define some vectors
JSVAL_VECTOR(CVector2D)
JSVAL_VECTOR(std::vector<CVector2D>)
JSVAL_VECTOR(CGUIString)
template<> void ScriptInterface::ToJSVal<CGUIList>(JSContext* cx, JS::MutableHandleValue ret, const CGUIList& val)
{
ToJSVal(cx, ret, val.m_Items);
}
template<> bool ScriptInterface::FromJSVal<CGUIList>(JSContext* cx, JS::HandleValue v, CGUIList& out)
{
return FromJSVal(cx, v, out.m_Items);
}
template<> void ScriptInterface::ToJSVal<CGUISeries>(JSContext* cx, JS::MutableHandleValue ret, const CGUISeries& val)
{
ToJSVal(cx, ret, val.m_Series);
}
template<> bool ScriptInterface::FromJSVal<CGUISeries>(JSContext* cx, JS::HandleValue v, CGUISeries& out)
{
return FromJSVal(cx, v, out.m_Series);
}

View File

@ -269,7 +269,7 @@ bool JSI_IGUIObject::getProperty(JSContext* cx, JS::HandleObject obj, JS::Handle
{
CGUIList value;
GUI<CGUIList>::GetSetting(e, propName, value);
ScriptInterface::ToJSVal(cx, vp, value.m_Items);
ScriptInterface::ToJSVal(cx, vp, value);
break;
}
@ -277,7 +277,7 @@ bool JSI_IGUIObject::getProperty(JSContext* cx, JS::HandleObject obj, JS::Handle
{
CGUISeries value;
GUI<CGUISeries>::GetSetting(e, propName, value);
ScriptInterface::ToJSVal(cx, vp, value.m_Series);
ScriptInterface::ToJSVal(cx, vp, value);
break;
}
@ -547,7 +547,7 @@ bool JSI_IGUIObject::setProperty(JSContext* cx, JS::HandleObject obj, JS::Handle
case GUIST_CGUIList:
{
CGUIList list;
if (ScriptInterface::FromJSVal(cx, vp, list.m_Items))
if (ScriptInterface::FromJSVal(cx, vp, list))
GUI<CGUIList>::SetSetting(e, propName, list);
else
{
@ -560,7 +560,7 @@ bool JSI_IGUIObject::setProperty(JSContext* cx, JS::HandleObject obj, JS::Handle
case GUIST_CGUISeries:
{
CGUISeries series;
if (ScriptInterface::FromJSVal(cx, vp, series.m_Series))
if (ScriptInterface::FromJSVal(cx, vp, series))
GUI<CGUISeries>::SetSetting(e, propName, series);
else
{