4
Copyright (C) 2005-2010 Julien Jorge, Sebastien Angibaud
6
This program is free software; you can redistribute it and/or modify it
7
under the terms of the GNU General Public License as published by the
8
Free Software Foundation; either version 2 of the License, or (at your
9
option) any later version.
11
This program is distributed in the hope that it will be useful, but WITHOUT
12
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16
You should have received a copy of the GNU General Public License along
17
with this program; if not, write to the Free Software Foundation, Inc.,
18
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
contact: plee-the-bear@gamned.org
22
Please add the tag [Bear] in the subject of your mails.
25
* \file binary_boolean_expression.hpp
26
* \brief A logical and of two boolean expressions.
27
* \author Julien Jorge
29
#ifndef __EXPR_BINARY_BOOLEAN_EXPRESSION_HPP__
30
#define __EXPR_BINARY_BOOLEAN_EXPRESSION_HPP__
32
#include "expr/base_boolean_expression.hpp"
33
#include "expr/boolean_expression.hpp"
42
* \brief A boolean expression with two operands.
43
* \author Julien Jorge
46
class EXPR_EXPORT binary_boolean_expression:
47
public base_boolean_expression
50
/** \brief The type of the operands. */
51
typedef boolean_expression operand_type;
54
binary_boolean_expression();
55
binary_boolean_expression(const binary_boolean_expression<F>& that);
56
binary_boolean_expression
57
( const boolean_expression& left, const boolean_expression& right );
59
const boolean_expression& get_left_operand() const;
60
void set_left_operand( const boolean_expression& op );
62
const boolean_expression& get_right_operand() const;
63
void set_right_operand( const boolean_expression& op );
65
base_boolean_expression* clone() const;
66
bool evaluate() const;
69
/** \brief The left operand. */
70
boolean_expression m_left;
72
/** \brief The right operand. */
73
boolean_expression m_right;
75
}; // class binary_boolean_expression
77
typedef binary_boolean_expression< std::equal_to<bool> > boolean_equality;
79
binary_boolean_expression< std::not_equal_to<bool> > boolean_disequality;
80
typedef binary_boolean_expression< std::logical_and<bool> > logical_and;
81
typedef binary_boolean_expression< std::logical_or<bool> > logical_or;
86
#include "expr/impl/binary_boolean_expression.tpp"
88
#endif // __EXPR_BINARY_BOOLEAN_EXPRESSION_HPP__