X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fcore%2Fqxtnullable.h;fp=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fcore%2Fqxtnullable.h;h=0000000000000000000000000000000000000000;hp=ae43147e2261266129a0a274e2a4e69fba096fd5;hb=140d8a132103d2fa9baf55036e09b165624de167;hpb=97d674034551438238c568e8b42efb08e1ba7354 diff --git a/src/contrib/libqxt-2007-10-24/src/core/qxtnullable.h b/src/contrib/libqxt-2007-10-24/src/core/qxtnullable.h deleted file mode 100644 index ae43147e..00000000 --- a/src/contrib/libqxt-2007-10-24/src/core/qxtnullable.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************** -** -** 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. -** -** -** -****************************************************************************/ - -/** -\class QxtNullable QxtNullable -\ingroup QxtCore -\brief distinct null value compatible with any data type. - -in general it's a templated abstraction to allow any data type to be -expressed with a null value distinct from any real value. An example -of such a use is for optional arguments. -\n -prepare a function for argument skipping: - -\code -void somefunction( qxtNull(int,a) , qxtNull(int,b) ) -{ - -if (!a.isNull()) - { - int i = a.value(); - //do something with i - } - if (!b.isNull()) - { - int x = b.value(); - //do something with x - } -} -\endcode - -usage: -\code - -somefunction(SKIP,1,2); -somefunction(3,4); -somefunction(3,SKIP,6); -somefunction(1); -\endcode - -*/ - -#ifndef QXTNULLABLE_H -#define QXTNULLABLE_H -#include - -/*! \relates QxtNullable - * defines a skipable argument with type \a t and variable name \a n - */ -#define qxtNull(t,n) QxtNullable n = QxtNullable() - -#include - -template -class /*QXT_CORE_EXPORT*/ QxtNullable -{ -public: - QxtNullable(QxtNull); - QxtNullable(const T& p); - QxtNullable(); - - ///determinates if the Value is set to something meaningfull - bool isNull() const; - - ///delete Value - void nullify(); - - T& value() const; - operator T() const; - void operator=(const T& p); - -private: - T* val; -}; - -template -QxtNullable::QxtNullable(QxtNull) -{ - val = 0; -} - -template -QxtNullable::QxtNullable(const T& p) -{ - val = const_cast(&p); -} - -template -QxtNullable::QxtNullable() -{ - val = 0; -} - -template -QxtNullable::operator T() const -{ - return *val; -} - -template -T& QxtNullable::value() const -{ - return *val; -} - -template -bool QxtNullable::isNull() const -{ - return (val==0); -} - -template -void QxtNullable::nullify() -{ - val=0; -} - -template -void QxtNullable::operator=(const T& p) -{ - val = const_cast(&p); -} - -#endif