Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'AddNode (./kdelibs/kjs/nodes.h:337)
class AddNode : public Node {
public:
AddNode(Node *t1, Node *t2, int op) : term1(t1), term2(t2), oper(op) {}
KJSO *evaluate();
private:
Node *term1, *term2;
int oper;
};
kdelibs'AddNode::evaluate() (./kdelibs/kjs/nodes.cpp:586)
KJSO *AddNode::evaluate()
{
Ptr t1 = term1->evaluate();
Ptr v1 = t1->getValue();
Ptr t2 = term2->evaluate();
Ptr v2 = t2->getValue();
Ptr p1 = toPrimitive(v1);
Ptr p2 = toPrimitive(v2);
if ((p1->isA(StringType) || p2->isA(StringType)) && oper == '+') {
Ptr s1 = toString(p1);
Ptr s2 = toString(p2);
UString s = s1->stringVal() + s2->stringVal();
KJSO *res = KJSO::newString(s);
return res;
}
Ptr n1 = toNumber(p1);
Ptr n2 = toNumber(p2);
KJSO *result;
if (oper == '+')
result = KJSO::newNumber(n1->doubleVal() + n2->doubleVal());
else
result = KJSO::newNumber(n1->doubleVal() - n2->doubleVal());
return result;
}
// ECMA 11.14