MetaType_ID argument::typeId() const { if (isVariant()) { auto *v = static_cast<variant*>(m_data); if (m_type.isLvalueReference() && m_type.isConst()) return v->internalTypeId(variant::type_attribute::LREF_CONST, {}); else if (m_type.isLvalueReference()) return v->internalTypeId(variant::type_attribute::LREF, {}); else return v->internalTypeId(variant::type_attribute::NONE, {}); } return m_type.typeId(); }
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(); }
bool Variant::isVariant(const VariantInterface& variant) const { if (variant.compositeType() == VariantInterface::AND_COMPOSITE) { return isVariant(variant.lhs()) && isVariant(variant.rhs()); } if (variant.compositeType() == VariantInterface::OR_COMPOSITE) { return isVariant(variant.lhs()) || isVariant(variant.rhs()); } if (variant.package() != package()) return false; if (variant.id() == DATA_ID) return true; if (variant.id() == id()) return true; switch(variant.id()) { case PRIMITIVE_ID: return isVariant(BOOL) || isVariant(INT) || isVariant(UINT) || isVariant(FLOAT_32) || isVariant(FLOAT_64); case UINT_ID: return isVariant(UINT_8) || isVariant(UINT_16) || isVariant(UINT_32) || isVariant(UINT_64); case UINT_32_ID: return isVariant(ENUM); case INT_ID: return isVariant(UINT) || isVariant(INT_8) || isVariant(INT_16) || isVariant(INT_32) || isVariant(INT_64); case FLOAT_ID: return isVariant(FLOAT_32) || isVariant(FLOAT_64); case MATRIX_ID: return isVariant(INT_MATRIX) || isVariant(UINT_MATRIX) || isVariant(FLOAT_MATRIX) || isVariant(IMAGE); case INT_MATRIX_ID: return isVariant(UINT_MATRIX) || isVariant(INT_8_MATRIX) || isVariant(INT_16_MATRIX) || isVariant(INT_32_MATRIX); case UINT_MATRIX_ID: return isVariant(UINT_8_MATRIX) || isVariant(UINT_16_MATRIX) || isVariant(UINT_32_MATRIX); case FLOAT_MATRIX_ID: return isVariant(FLOAT_32_MATRIX) || isVariant(FLOAT_64_MATRIX); case IMAGE_ID: return isVariant(MONO_IMAGE) || isVariant(RGB_IMAGE) || isVariant(BAYERBG_8_IMAGE) || isVariant(BAYERGB_8_IMAGE) || isVariant(BAYERBG_16_IMAGE) || isVariant(BAYERGB_16_IMAGE);; case MONO_IMAGE_ID: return isVariant(MONO_8_IMAGE) || isVariant(MONO_16_IMAGE); case RGB_IMAGE_ID: return isVariant(RGB_24_IMAGE) || isVariant(BGR_24_IMAGE) || isVariant(RGB_48_IMAGE) || isVariant(BGR_48_IMAGE); case FILE_ID: return isVariant(BINARY_FILE) || isVariant(TEXT_FILE); default: return false; } }