diff options
author | Peter Hartmann <peter.hartmann@trolltech.com> | 2009-08-06 12:30:26 (GMT) |
---|---|---|
committer | Peter Hartmann <peter.hartmann@trolltech.com> | 2009-09-03 11:50:00 (GMT) |
commit | 98aee81ccc17c0fe5d7e013fc40ca171dc2ebb43 (patch) | |
tree | 3fbc237da6ecc6557727aa5c9547d5713380a5a8 | |
parent | 06153cadcc6c253491879af29f9843765f519354 (diff) | |
download | Qt-98aee81ccc17c0fe5d7e013fc40ca171dc2ebb43.zip Qt-98aee81ccc17c0fe5d7e013fc40ca171dc2ebb43.tar.gz Qt-98aee81ccc17c0fe5d7e013fc40ca171dc2ebb43.tar.bz2 |
XQuery: allow usage of floats in QXmlQuery
float is not a registered type in QVariant, but a QVariant can be
constructed from it and then used in XQuery.
Reviewed-by: Frans Englich
-rw-r--r-- | src/xmlpatterns/data/qatomicvalue.cpp | 18 | ||||
-rw-r--r-- | tests/auto/qxmlquery/tst_qxmlquery.cpp | 2 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/xmlpatterns/data/qatomicvalue.cpp b/src/xmlpatterns/data/qatomicvalue.cpp index d8186e5..3aca100 100644 --- a/src/xmlpatterns/data/qatomicvalue.cpp +++ b/src/xmlpatterns/data/qatomicvalue.cpp @@ -172,13 +172,19 @@ Item AtomicValue::toXDM(const QVariant &value) return Item(Double::fromValue(value.toDouble())); default: { - Q_ASSERT_X(false, - Q_FUNC_INFO, - qPrintable(QString::fromLatin1( - "QVariants of type %1 are not supported in " - "Patternist, see the documentation") + if (value.userType() == qMetaTypeId<float>()) + { + return Item(Float::fromValue(value.value<float>())); + } + else { + Q_ASSERT_X(false, + Q_FUNC_INFO, + qPrintable(QString::fromLatin1( + "QVariants of type %1 are not supported in " + "Patternist, see the documentation") .arg(QLatin1String(value.typeName())))); - return AtomicValue::Ptr(); + return AtomicValue::Ptr(); + } } } } diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp index d9b5215..a2c40a8 100644 --- a/tests/auto/qxmlquery/tst_qxmlquery.cpp +++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp @@ -1305,7 +1305,7 @@ void tst_QXmlQuery::basicQtToXQueryTypeCheck() const // TODO Do with different QDateTime time specs query.bindVariable(QLatin1String("fromQDateTime"), QXmlItem(QDateTime(QDate(2001, 9, 10), QTime(1, 2, 3)))); query.bindVariable(QLatin1String("fromDouble"), QXmlItem(double(3))); -// query.bindVariable(QLatin1String("fromFloat"), QXmlItem(float(4))); + query.bindVariable(QLatin1String("fromFloat"), QXmlItem(float(4))); query.bindVariable(QLatin1String("integer"), QXmlItem(5)); query.bindVariable(QLatin1String("fromQString"), QXmlItem(QString::fromLatin1("A QString"))); query.bindVariable(QLatin1String("fromQChar"), QXmlItem(QChar::fromLatin1('C'))); |