/*
- * Copyright (C) 2005-2011 Team XBMC
- * http://www.xbmc.org
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- * http://www.gnu.org/copyleft/gpl.html
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
*
*/
inline NonCopyable() {}
};
+ /**
+ * This will create a new predicate from an old predicate P with
+ * inverse truth value. This predicate is safe to use in a
+ * TightConditionVariable<P>
+ */
+ template <class P> class InversePredicate
+ {
+ P predicate;
+
+ public:
+ inline InversePredicate(P predicate_) : predicate(predicate_) {}
+ inline InversePredicate(const InversePredicate<P>& other) : predicate(other.predicate) {}
+ inline InversePredicate<P>& operator=(InversePredicate<P>& other) { predicate = other.predicate; }
+
+ inline bool operator!() const { return !(!predicate); }
+ };
+
}