示例#1
0
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();
}
示例#2
0
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();
}
示例#3
0
 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;
     }
 }