On segunda-feira, 4 de novembro de 2013 16:07:32, Thiago Macieira wrote:
> I didn't find anything, but I did not review qmetatype.h.
I looked into qmetatype.h. There is a lot of new symbols most of them hidden in
a private namspace. None symbol was removed. I believe BC is fine.
I see one potential bug here:
+#ifndef QT_NO_DEBUG_STREAM
+ template<typename T>
+ static bool registerDebugStreamOperator()
+ {
+ Q_STATIC_ASSERT_X((!QMetaTypeId2<T>::IsBuiltIn),
+ "QMetaType::registerDebugStreamOperator: The type must be a custom
type.");
+
+ const int typeId = qMetaTypeId<T>();
+ static const QtPrivate::BuiltInDebugStreamFunction<T> f;
+ return registerDebugStreamOperatorFunction(&f, typeId);
+ }
+ template<typename T>
+ static bool hasRegisteredDebugStreamOperator()
+ {
+ return hasRegisteredDebugStreamOperator(qMetaTypeId<T>());
+ }
+ static bool hasRegisteredDebugStreamOperator(int typeId);
+#endif
It changes the public interface depending on QT_NO_DEBUG_STREAM which is
suboptimal especially that even if the flag is specified QDebug is defined. The
same happens here:
+#ifndef QT_NO_DEBUG_STREAM
+ template<typename T>
+ static bool registerDebugStreamOperator()
+ {
+ Q_STATIC_ASSERT_X((!QMetaTypeId2<T>::IsBuiltIn),
+ "QMetaType::registerDebugStreamOperator: The type must be a custom
type.");
+
+ const int typeId = qMetaTypeId<T>();
+ static const QtPrivate::BuiltInDebugStreamFunction<T> f;
+ return registerDebugStreamOperatorFunction(&f, typeId);
+ }
+ template<typename T>
+ static bool hasRegisteredDebugStreamOperator()
+ {
+ return hasRegisteredDebugStreamOperator(qMetaTypeId<T>());
+ }
+ static bool hasRegisteredDebugStreamOperator(int typeId);
+#endif
I have found also an inconsistency in the naming:
+ static bool registerComparators()
...
+ template<typename T>
+ static bool hasRegisteredComparators()
...
+ static bool hasRegisteredComparators(int typeId);
but
+ static bool registerDebugStreamOperator()
...
+ template<typename T>
+ static bool hasRegisteredDebugStreamOperator()
...
+ static bool hasRegisteredDebugStreamOperator(int typeId);
and
+ static bool registerConverter(MemberFunction function);
+ static bool registerConverter(MemberFunctionOk function);
+ static bool registerConverter(UnaryFunction function);
I suppose that we should not use plural form registerComparators.
Cheers,
Jędrek
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development