QmlJS: Adding IntValue and RealValue

This allows to distinguish between int an real numbers

Reviewed-by: Christian Kamm
This commit is contained in:
Thomas Hartmann
2010-11-10 16:31:20 +01:00
committed by Christian Kamm
parent e9fd078e45
commit ba39234627
2 changed files with 71 additions and 7 deletions

View File

@@ -870,13 +870,13 @@ const Value *QmlObjectValue::propertyValue(const FakeMetaProperty &prop) const
} else if (typeName == QLatin1String("bool")) {
value = engine()->booleanValue();
} else if (typeName == QLatin1String("int")
|| typeName == QLatin1String("float")
|| typeName == QLatin1String("double")
|| typeName == QLatin1String("qreal")
|| typeName == QLatin1String("long")
// ### Review: more types here?
) {
value = engine()->numberValue();
|| typeName == QLatin1String("long")) {
value = engine()->intValue();
} else if (typeName == QLatin1String("float")
|| typeName == QLatin1String("double")
|| typeName == QLatin1String("qreal")) {
// ### Review: more types here?
value = engine()->realValue();
} else if (typeName == QLatin1String("QFont")) {
value = engine()->qmlFontObject();
} else if (typeName == QLatin1String("QPoint")
@@ -1318,6 +1318,17 @@ const NumberValue *Value::asNumberValue() const
return 0;
}
const IntValue *Value::asIntValue() const
{
return 0;
}
const RealValue *Value::asRealValue() const
{
return 0;
}
const BooleanValue *Value::asBooleanValue() const
{
return 0;
@@ -1381,6 +1392,17 @@ const NumberValue *NumberValue::asNumberValue() const
return this;
}
const RealValue *RealValue::asRealValue() const
{
return this;
}
const IntValue *IntValue::asIntValue() const
{
return this;
}
void NumberValue::accept(ValueVisitor *visitor) const
{
visitor->visit(this);
@@ -2526,6 +2548,15 @@ const NumberValue *Engine::numberValue() const
return &_numberValue;
}
const RealValue *Engine::realValue() const
{
return &_realValue;
}
const IntValue *Engine::intValue() const
{
return &_intValue;
}
const BooleanValue *Engine::booleanValue() const
{
return &_booleanValue;