/Src/Dependencies/Boost/boost/spirit/home/phoenix/statement/detail/switch_eval.hpp
http://hadesmem.googlecode.com/ · C++ Header · 111 lines · 95 code · 9 blank · 7 comment · 2 complexity · c6d6c9ac3b7a0645c5d73fc9cebb65b0 MD5 · raw file
- /*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- ==============================================================================*/
- #ifndef PHOENIX_STATEMENT_DETAIL_SWITCH_EVAL_HPP
- #define PHOENIX_STATEMENT_DETAIL_SWITCH_EVAL_HPP
- namespace boost { namespace phoenix { namespace detail
- {
- template <int N>
- struct switch_eval;
- template <>
- struct switch_eval<0>
- {
- template <
- typename Env, typename Cond, typename Default
- >
- struct result
- {
- typedef void type;
- };
- template <
- typename RT, typename Env, typename Cond, typename Default
- >
- static void
- eval(
- Env const& env, Cond& cond, Default& default_
- )
- {
- default_.eval(env);
- }
- };
- template <>
- struct switch_eval<1>
- {
- template <
- typename Env, typename Cond, typename Default
- , typename Case0
- >
- struct result
- {
- typedef void type;
- };
- template <
- typename RT, typename Env, typename Cond, typename Default
- , typename Case0
- >
- static void
- eval(
- Env const& env, Cond& cond, Default& default_
- , Case0& _0
- )
- {
- switch (cond.eval(env))
- {
- case Case0::value:
- _0.eval(env);
- break;
- default:
- default_.eval(env);
- }
- }
- };
- template <>
- struct switch_eval<2>
- {
- template <
- typename Env, typename Cond, typename Default
- , typename Case0, typename Case1
- >
- struct result
- {
- typedef void type;
- };
- template <
- typename RT, typename Env, typename Cond, typename Default
- , typename Case0, typename Case1
- >
- static void
- eval(
- Env const& env, Cond& cond, Default& default_
- , Case0& _0, Case1& _1
- )
- {
- switch (cond.eval(env))
- {
- case Case0::value:
- _0.eval(env);
- break;
- case Case1::value:
- _1.eval(env);
- break;
- default:
- default_.eval(env);
- }
- }
- };
- // Bring in the rest of the switch_evals
- #include <boost/spirit/home/phoenix/statement/detail/switch_eval.ipp>
- }}}
- #endif