diff options
author | David Faure <faure@kde.org> | 2014-01-01 11:35:56 +0100 |
---|---|---|
committer | David Faure <faure@kde.org> | 2014-01-01 11:35:56 +0100 |
commit | 41e55025e17b2f8e17294bc8cff7b47e8f6af1f7 (patch) | |
tree | 2ecde01a63b688076edeb17bed8ef128bbdf501b /src/core/conversioncheck.h | |
parent | 6560c6031f2219bf2da515ef6daa73ec5af854aa (diff) | |
download | kconfig-41e55025e17b2f8e17294bc8cff7b47e8f6af1f7.tar.gz kconfig-41e55025e17b2f8e17294bc8cff7b47e8f6af1f7.tar.bz2 |
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 :)
Diffstat (limited to 'src/core/conversioncheck.h')
-rw-r--r-- | src/core/conversioncheck.h | 124 |
1 files changed, 124 insertions, 0 deletions
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 <brax108@cox.net> + + 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 <QtCore/QString> +#include <QtCore/QDate> +#include <QtCore/QPoint> +#include <QtCore/QSize> +#include <QtCore/QRect> +#include <QtCore/QVariant> + +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 <typename T> +struct QVconvertible { + typedef unsupported toQString; + typedef unsupported toQVariant; +}; + +// constraint classes +template <typename T> +struct type_toQString { + void constraint() + { + supported x = y; + Q_UNUSED(x); + } + typename QVconvertible<T>::toQString y; +}; + +template <typename T> +struct type_toQVariant { + void constraint() + { + supported x = y; + Q_UNUSED(x); + } + typename QVconvertible<T>::toQVariant y; +}; + +// check if T is convertible to QString thru QVariant +// if not supported can't be used in QList<T> functions +template <typename T> +inline void to_QString() +{ + void (type_toQString<T>::*x)() = &type_toQString<T>::constraint; + Q_UNUSED(x); +} + +// check if T is convertible to QVariant & supported in readEntry/writeEntry +template <typename T> +inline void to_QVariant() +{ + void (type_toQVariant<T>::*x)() = &type_toQVariant<T>::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<T> functions +// variant_support - has a QVariant constructor +#define QVConversions(type, string_support, variant_support) \ + template <> struct QVconvertible<type> {\ + 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<QUrl>, unsupported, supported); +} + +#endif + |