00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef CONVERSION_CHECK_H
00023 #define CONVERSION_CHECK_H
00024
00025 #include <QtCore/QString>
00026 #include <QtGui/QColor>
00027 #include <QtGui/QFont>
00028 #include <QtCore/QDate>
00029 #include <QtCore/QPoint>
00030 #include <QtCore/QSize>
00031 #include <QtCore/QRect>
00032 #include <kurl.h>
00033 #include <QtCore/QVariant>
00034
00035 namespace ConversionCheck {
00036
00037
00038 struct supported { };
00039 struct unsupported { };
00040
00041
00042 template <typename T>
00043 struct QVconvertible
00044 {
00045 typedef unsupported toQString;
00046 typedef unsupported toQVariant;
00047 };
00048
00049
00050 template <typename T>
00051 struct type_toQString
00052 {
00053 void constraint() { supported x = y; }
00054 typename QVconvertible<T>::toQString y;
00055 };
00056
00057 template <typename T>
00058 struct type_toQVariant
00059 {
00060 void constraint() { supported x = y; }
00061 typename QVconvertible<T>::toQVariant y;
00062 };
00063
00064
00065
00066
00067 template <typename T>
00068 inline void to_QString()
00069 {
00070 void (type_toQString<T>::*x)() = &type_toQString<T>::constraint;
00071 Q_UNUSED(x);
00072 }
00073
00074
00075 template <typename T>
00076 inline void to_QVariant()
00077 {
00078 void (type_toQVariant<T>::*x)() = &type_toQVariant<T>::constraint;
00079 Q_UNUSED(x);
00080 }
00081
00082
00083
00084
00085
00086 #define QVConversions(type, string_support, variant_support) \
00087 template <> struct QVconvertible<type> {\
00088 typedef string_support toQString;\
00089 typedef variant_support toQVariant;\
00090 }
00091
00092
00093
00094 QVConversions(bool, supported, supported);
00095 QVConversions(int, supported, supported);
00096 QVConversions(unsigned int, supported, supported);
00097 QVConversions(long long, supported, supported);
00098 QVConversions(unsigned long long, supported, supported);
00099 QVConversions(float, supported, supported);
00100 QVConversions(double, supported, supported);
00101 QVConversions(QString, supported, supported);
00102 QVConversions(QColor, unsupported, supported);
00103 QVConversions(QFont, supported, supported);
00104 QVConversions(QDateTime, unsupported, supported);
00105 QVConversions(QDate, unsupported, supported);
00106 QVConversions(QSize, unsupported, supported);
00107 QVConversions(QRect, unsupported, supported);
00108 QVConversions(QPoint, unsupported, supported);
00109 QVConversions(QSizeF, unsupported, supported);
00110 QVConversions(QRectF, unsupported, supported);
00111 QVConversions(QPointF, unsupported, supported);
00112 QVConversions(QByteArray, supported, supported);
00113 QVConversions(QStringList, unsupported, supported);
00114 QVConversions(QVariantList, unsupported, supported);
00115 QVConversions(KUrl, supported, supported);
00116 QVConversions(KUrl::List, unsupported, supported);
00117 }
00118
00119 #endif
00120