X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fcore%2Fqxtmetatype.h;fp=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fcore%2Fqxtmetatype.h;h=ea4e6df584bff1dd16b31d7bba924cf1951dc127;hp=0000000000000000000000000000000000000000;hb=a634acadbcf6017474f68a3eaf7cb632660e9e49;hpb=cd122ca8e0d2c0ffc5397e0a813c75d791a7e6e3 diff --git a/src/contrib/libqxt-2007-10-24/src/core/qxtmetatype.h b/src/contrib/libqxt-2007-10-24/src/core/qxtmetatype.h new file mode 100644 index 00000000..ea4e6df5 --- /dev/null +++ b/src/contrib/libqxt-2007-10-24/src/core/qxtmetatype.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) Qxt Foundation. Some rights reserved. +** +** This file is part of the QxtCore module of the Qt eXTension library +** +** This library is free software; you can redistribute it and/or modify it +** under the terms of th Common Public License, version 1.0, as published by +** IBM. +** +** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY +** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY +** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR +** FITNESS FOR A PARTICULAR PURPOSE. +** +** You should have received a copy of the CPL along with this file. +** See the LICENSE file and the cpl1.0.txt file included with the source +** distribution for more information. If you did not receive a copy of the +** license, contact the Qxt Foundation. +** +** +** +****************************************************************************/ + +#ifndef QXTMETATYPE_H +#define QXTMETATYPE_H + +#include +#include +#include +#include + +template +class QxtMetaType { +public: + static inline T* construct(const T* copy = 0) { + return QMetaType::construct(qMetaTypeId(), reinterpret_cast(copy)); + } + + static inline void destroy(T* data) { + QMetaType::destroy(qMetaTypeId(), data); + } + + // no need to reimplement isRegistered since this class will fail at compile time if it isn't + + static inline bool load(QDataStream& stream, T* data) { + return QMetaType::load(stream, qMetaTypeId(), reinterpret_cast(data)); + } + + static inline bool save(QDataStream& stream, const T* data) { + return QMetaType::save(stream, qMetaTypeId(), reinterpret_cast(data)); + } + + static inline int type() { + return qMetaTypeId(); + } + + static inline const char* name() { + return QMetaType::typeName(qMetaTypeId()); + } +}; + +template <> +class QxtMetaType { +public: + static inline void* construct(const void* copy = 0) { + Q_UNUSED(copy); + return 0; + } + + static inline void destroy(void* data) { + Q_UNUSED(data); + } + + static inline bool load(QDataStream& stream, void* data) { + Q_UNUSED(stream); + Q_UNUSED(data); + return false; + } + + static inline bool save(QDataStream& stream, const void* data) { + Q_UNUSED(stream); + Q_UNUSED(data); + return false; + } + + static inline int type() { + return 0; + } + + static inline const char* name() { + return 0; + } +}; + +inline void* qxtConstructByName(const char* typeName, const void* copy = 0) { + return QMetaType::construct(QMetaType::type(typeName), copy); +} + +inline void qxtDestroyByName(const char* typeName, void* data) { + QMetaType::destroy(QMetaType::type(typeName), data); +} + +inline void* qxtConstructFromGenericArgument(QGenericArgument arg) { + return qxtConstructByName(arg.name(), arg.data()); +} + +inline void qxtDestroyFromGenericArgument(QGenericArgument arg) { + qxtDestroyByName(arg.name(), arg.data()); +} + +#endif