CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Predicate.hpp File Reference
#include "CeresEngine/Foundation/Container/Tuple.hpp"
#include <utility>

Go to the source code of this file.

Classes

struct  CeresEngine::Predicate< T >
 A type that predicate types must extend to allow automatic operator overloading. More...
 
struct  CeresEngine::BinaryPredicate< T, Predicate1, Predicate2 >
 A predicate that operates using two other predicates as-if a binary operation. More...
 
struct  CeresEngine::UnaryPredicate< T, TPredicate >
 A predicate that operates using two other predicates as-if a unary operation. More...
 
struct  CeresEngine::AndPredicate< Predicate1, Predicate2, Predicates >
 A predicate implementation that performs a logical AND between other predicates. More...
 
struct  CeresEngine::AndPredicate< Predicate1, Predicate2 >
 A predicate implementation that performs a logical AND between two other predicates. More...
 
struct  CeresEngine::AndPredicate< Predicate1, AndPredicate< Predicate2, Predicate3 > >
 A specialization for the AndPredicate that unfolds nested and predicates into one. More...
 
struct  CeresEngine::AndPredicate< AndPredicate< Predicate1, Predicate2 >, Predicate3 >
 A specialization for the AndPredicate that unfolds nested and predicates into one. More...
 
struct  CeresEngine::AndPredicate< AndPredicate< Predicate1, Predicate2 >, AndPredicate< Predicate3, Predicate4 > >
 A specialization for the AndPredicate that unfolds nested and predicates into one. More...
 
struct  CeresEngine::OrPredicate< Predicate1, Predicate2, Predicates >
 A predicate implementation that performs a logical OR between other predicates. More...
 
struct  CeresEngine::OrPredicate< Predicate1, Predicate2 >
 A predicate implementation that performs a logical OR between two other predicates. More...
 
struct  CeresEngine::OrPredicate< Predicate1, OrPredicate< Predicate2, Predicate3 > >
 A specialization for the OrPredicate that unfolds nested or predicates into one. More...
 
struct  CeresEngine::OrPredicate< OrPredicate< Predicate1, Predicate2 >, Predicate3 >
 A specialization for the OrPredicate that unfolds nested or predicates into one. More...
 
struct  CeresEngine::OrPredicate< OrPredicate< Predicate1, Predicate2 >, OrPredicate< Predicate3, Predicate4 > >
 A specialization for the OrPredicate that unfolds nested or predicates into one. More...
 
struct  CeresEngine::NotPredicate< TPredicate >
 
struct  CeresEngine::UserPredicate< Callable >
 
struct  CeresEngine::AndPredicate< NotPredicate< Predicate1 >, NotPredicate< Predicate2 > >
 An optimization to an and predicate that applies the "De Morgan" to the operands. More...
 
struct  CeresEngine::OrPredicate< NotPredicate< Predicate1 >, NotPredicate< Predicate2 > >
 An optimization to an or predicate that applies the "De Morgan" to the operands. More...
 
struct  CeresEngine::NotPredicate< NotPredicate< TPredicate > >
 An optimization to a not predicate that removes double negations. More...
 

Namespaces

namespace  CeresEngine
 

Functions

template<typename Predicate1 , typename Predicate2 >
constexpr auto CeresEngine::operator&& (const Predicate< Predicate1 > &predicate1, const Predicate< Predicate2 > &predicate2) noexcept
 Helper operator to create a new AndPredicate from two predicates.
 
template<typename Predicate1 , typename Predicate2 >
constexpr auto CeresEngine::operator&& (Predicate< Predicate1 > &&predicate1, Predicate< Predicate2 > &&predicate2) noexcept
 Helper operator to create a new AndPredicate from two predicates.
 
template<typename Predicate1 , typename Predicate2 >
constexpr auto CeresEngine::operator|| (const Predicate< Predicate1 > &predicate1, const Predicate< Predicate2 > &predicate2) noexcept
 Helper operator to create a new OrPredicate from two predicates.
 
template<typename Predicate1 , typename Predicate2 >
constexpr auto CeresEngine::operator|| (Predicate< Predicate1 > &&predicate1, Predicate< Predicate2 > &&predicate2) noexcept
 Helper operator to create a new OrPredicate from two predicates.
 
template<typename TPredicate >
constexpr auto CeresEngine::operator! (const Predicate< TPredicate > &predicate) noexcept
 Helper operator to create a new OrPredicate from two predicates.
 
template<typename TPredicate >
constexpr auto CeresEngine::operator! (Predicate< TPredicate > &&predicate) noexcept
 Helper operator to create a new OrPredicate from two predicates.
 
template<typename Callable >
constexpr auto CeresEngine::predicate (Callable &&callable) noexcept
 Helper function to create a new predicate from a lambda.
 
template<typename T >
constexpr auto CeresEngine::eq (T value) noexcept
 Creates a new predicate that compares the input object with value using == operator.
 
template<typename T >
constexpr auto CeresEngine::neq (T value) noexcept
 Creates a new predicate that compares the input object with value using != operator.
 
template<typename T >
constexpr auto CeresEngine::gt (T value) noexcept
 Creates a new predicate that compares the input object with value using > operator.
 
template<typename T >
constexpr auto CeresEngine::gte (T value) noexcept
 Creates a new predicate that compares the input object with value using >= operator.
 
template<typename T >
constexpr auto CeresEngine::lt (T value) noexcept
 Creates a new predicate that compares the input object with value using < operator.
 
template<typename T >
constexpr auto CeresEngine::lte (T value) noexcept
 Creates a new predicate that compares the input object with value using <= operator.