isComplex = true,
isStatic = true,
isLarge = (sizeof(T)>sizeof(void*)),
- isDummy = false
+ isDummy = false,
+ sizeOf = sizeof(T)
};
};
isComplex = false,
isStatic = false,
isLarge = false,
- isDummy = false
+ isDummy = false,
+ sizeOf = 0
};
};
isComplex = false,
isStatic = false,
isLarge = false,
- isDummy = false
+ isDummy = false,
+ sizeOf = sizeof(T*)
};
};
isComplex = true, \
isStatic = false, \
isLarge = (sizeof(CONTAINER<T>) > sizeof(void*)), \
- isDummy = false \
+ isDummy = false, \
+ sizeOf = sizeof(CONTAINER<T>) \
}; \
};
isStatic = (((FLAGS) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), \
isLarge = (sizeof(TYPE)>sizeof(void*)), \
isPointer = false, \
- isDummy = (((FLAGS) & Q_DUMMY_TYPE) != 0) \
+ isDummy = (((FLAGS) & Q_DUMMY_TYPE) != 0), \
+ sizeOf = sizeof(TYPE) \
}; \
static inline const char *name() { return #TYPE; } \
}
class SizeOf {
template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
struct SizeOfImpl {
- static int Size(const int) { return sizeof(T); }
+ static int Size(const int) { return QTypeInfo<T>::sizeOf; }
};
template<typename T>
struct SizeOfImpl<T, /* IsAcceptedType = */ false> {
template<typename T>
int delegate(const T*) { return SizeOfImpl<T>::Size(m_type); }
- int delegate(const void*) { return 0; }
int delegate(const QMetaTypeSwitcher::UnknownType*) { return customTypeSizeOf(m_type); }
private:
static int customTypeSizeOf(const int type)
TypeTestFunctionGetter::get(type)();
}
-template<typename T> struct SafeSizeOf { enum {Size = sizeof(T)}; };
-template<> struct SafeSizeOf<void> { enum {Size = 0}; };
-
void tst_QMetaType::sizeOf_data()
{
QTest::addColumn<QMetaType::Type>("type");
QTest::addColumn<int>("size");
#define ADD_METATYPE_TEST_ROW(MetaTypeName, MetaTypeId, RealType) \
- QTest::newRow(#RealType) << QMetaType::MetaTypeName << int(SafeSizeOf<RealType>::Size);
+ QTest::newRow(#RealType) << QMetaType::MetaTypeName << int(QTypeInfo<RealType>::sizeOf);
FOR_EACH_CORE_METATYPE(ADD_METATYPE_TEST_ROW)
#undef ADD_METATYPE_TEST_ROW
}