Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2007 Joel de Guzman Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: ==============================================================================*/ Chris@16: #ifndef PHOENIX_OPERATOR_LOGICAL_HPP Chris@16: #define PHOENIX_OPERATOR_LOGICAL_HPP Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace phoenix Chris@16: { Chris@16: struct logical_not_eval; Chris@16: struct logical_and_eval; Chris@16: struct logical_or_eval; Chris@16: Chris@16: BOOST_UNARY_RESULT_OF(!x, result_of_logical_not) Chris@16: BOOST_BINARY_RESULT_OF(x && y, result_of_logical_and) Chris@16: BOOST_BINARY_RESULT_OF(x || y, result_of_logical_or) Chris@16: Chris@16: #define x a0.eval(env) Chris@16: #define y a1.eval(env) Chris@16: Chris@16: PHOENIX_UNARY_EVAL(logical_not_eval, result_of_logical_not, !x) Chris@16: PHOENIX_BINARY_EVAL(logical_and_eval, result_of_logical_and, x && y) Chris@16: PHOENIX_BINARY_EVAL(logical_or_eval, result_of_logical_or, x || y) Chris@16: Chris@16: PHOENIX_UNARY_COMPOSE(logical_not_eval, !) Chris@16: PHOENIX_BINARY_COMPOSE(logical_and_eval, &&) Chris@16: PHOENIX_BINARY_COMPOSE(logical_or_eval, ||) Chris@16: Chris@16: #undef x Chris@16: #undef y Chris@16: }} Chris@16: Chris@16: #endif