private static object DoScriptableIncrDecr(Scriptable target, string id, Scriptable protoChainStart, object value, int incrDecrMask)
{
bool post = ((incrDecrMask & Node.POST_FLAG) != 0);
double number;
if (value is Number)
{
number = System.Convert.ToDouble(((Number)value));
}
else
{
number = ToNumber(value);
if (post)
{
// convert result to number
value = WrapNumber(number);
}
}
if ((incrDecrMask & Node.DECR_FLAG) == 0)
{
++number;
}
else
{
--number;
}
Number result = WrapNumber(number);
target.Put(id, protoChainStart, result);
if (post)
{
return value;
}
else
{
return result;
}
}