From 41e55025e17b2f8e17294bc8cff7b47e8f6af1f7 Mon Sep 17 00:00:00 2001 From: David Faure Date: Wed, 1 Jan 2014 11:35:56 +0100 Subject: Generate forward headers. Install them in the proper directory. Let cmake find them. Had to rename conversion_check.h to conversioncheck.h Had to improve the scripts to support multiple libs in one framework :) --- src/core/conversioncheck.h | 124 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 src/core/conversioncheck.h (limited to 'src/core/conversioncheck.h') diff --git a/src/core/conversioncheck.h b/src/core/conversioncheck.h new file mode 100644 index 00000000..55bd8826 --- /dev/null +++ b/src/core/conversioncheck.h @@ -0,0 +1,124 @@ +/* + This file is part of the KDE libraries + Copyright (c) 2006 Thomas Braxton + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef CONVERSION_CHECK_H +#define CONVERSION_CHECK_H + +#include +#include +#include +#include +#include +#include + +class QColor; +class QFont; + +namespace ConversionCheck +{ + +// used to distinguish between supported/unsupported types +struct supported { }; +struct unsupported { }; + +// traits type class to define support for constraints +template +struct QVconvertible { + typedef unsupported toQString; + typedef unsupported toQVariant; +}; + +// constraint classes +template +struct type_toQString { + void constraint() + { + supported x = y; + Q_UNUSED(x); + } + typename QVconvertible::toQString y; +}; + +template +struct type_toQVariant { + void constraint() + { + supported x = y; + Q_UNUSED(x); + } + typename QVconvertible::toQVariant y; +}; + +// check if T is convertible to QString thru QVariant +// if not supported can't be used in QList functions +template +inline void to_QString() +{ + void (type_toQString::*x)() = &type_toQString::constraint; + Q_UNUSED(x); +} + +// check if T is convertible to QVariant & supported in readEntry/writeEntry +template +inline void to_QVariant() +{ + void (type_toQVariant::*x)() = &type_toQVariant::constraint; + Q_UNUSED(x); +} + +// define for all types handled in readEntry/writeEntry +// string_support - is supported by QVariant(type).toString(), +// can be used in QList functions +// variant_support - has a QVariant constructor +#define QVConversions(type, string_support, variant_support) \ + template <> struct QVconvertible {\ + typedef string_support toQString;\ + typedef variant_support toQVariant;\ + } + +// The only types needed here are the types handled in readEntry/writeEntry +// the default QVconvertible will take care of the rest. +QVConversions(bool, supported, supported); +QVConversions(int, supported, supported); +QVConversions(unsigned int, supported, supported); +QVConversions(long long, supported, supported); +QVConversions(unsigned long long, supported, supported); +QVConversions(float, supported, supported); +QVConversions(double, supported, supported); +QVConversions(QString, supported, supported); +QVConversions(QColor, unsupported, supported); +QVConversions(QFont, supported, supported); +QVConversions(QDateTime, unsupported, supported); +QVConversions(QDate, unsupported, supported); +QVConversions(QSize, unsupported, supported); +QVConversions(QRect, unsupported, supported); +QVConversions(QPoint, unsupported, supported); +QVConversions(QSizeF, unsupported, supported); +QVConversions(QRectF, unsupported, supported); +QVConversions(QPointF, unsupported, supported); +QVConversions(QByteArray, supported, supported); +QVConversions(QStringList, unsupported, supported); +QVConversions(QVariantList, unsupported, supported); +QVConversions(QUrl, supported, supported); +QVConversions(QList, unsupported, supported); +} + +#endif + -- cgit v1.2.1