QVariant QScriptValueImpl::toVariant() const { switch (m_type) { case QScript::InvalidType: return QVariant(); case QScript::UndefinedType: case QScript::NullType: case QScript::PointerType: case QScript::ReferenceType: break; case QScript::BooleanType: return QVariant(m_bool_value); case QScript::IntegerType: return QVariant(m_int_value); case QScript::NumberType: return QVariant(m_number_value); case QScript::StringType: return QVariant(m_string_value->s); case QScript::LazyStringType: return QVariant(*m_lazy_string_value); case QScript::ObjectType: if (isDate()) return QVariant(toDateTime()); #ifndef QT_NO_REGEXP if (isRegExp()) return QVariant(toRegExp()); #endif if (isVariant()) return variantValue(); #ifndef QT_NO_QOBJECT if (isQObject()) return qVariantFromValue(toQObject()); #endif QScriptValueImpl v = engine()->toPrimitive(*this); if (!v.isObject()) return v.toVariant(); break; } // switch return QVariant(); }