#ifndef LIBWCCL_OPS_FUNCTIONS_BOOL_PREDICATES_AND_H #define LIBWCCL_OPS_FUNCTIONS_BOOL_PREDICATES_AND_H #include <libwccl/ops/functions/bool/predicates/logicalpredicate.h> namespace Wccl { /** * Operator that realises "and" logical predicate */ class And : public LogicalPredicate { public: And(const boost::shared_ptr<BoolFunctionPtrVector>& expressions) : LogicalPredicate(expressions) { } /** * @returns Name of the function: "and" */ std::string raw_name() const { return "and"; } protected : /** * "And" predicate evaluates each expression from left to right, * and returns False once an expression evaluating to False is found. * If all expressions were True, it returns True. */ BaseRetValPtr apply_internal(const FunExecContext& context) const; }; } /* end ns Wccl */ #endif // LIBWCCL_OPS_FUNCTIONS_BOOL_PREDICATES_AND_H