summaryrefslogtreecommitdiff
path: root/boost/spirit/home/phoenix/statement/switch.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/spirit/home/phoenix/statement/switch.hpp')
-rw-r--r--boost/spirit/home/phoenix/statement/switch.hpp164
1 files changed, 0 insertions, 164 deletions
diff --git a/boost/spirit/home/phoenix/statement/switch.hpp b/boost/spirit/home/phoenix/statement/switch.hpp
deleted file mode 100644
index 1229994faf..0000000000
--- a/boost/spirit/home/phoenix/statement/switch.hpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*=============================================================================
- 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_SWITCH_HPP
-#define PHOENIX_STATEMENT_SWITCH_HPP
-
-#include <boost/spirit/home/phoenix/core/composite.hpp>
-#include <boost/spirit/home/phoenix/core/compose.hpp>
-#include <boost/spirit/home/phoenix/core/nothing.hpp>
-#include <boost/spirit/home/phoenix/statement/detail/switch_eval.hpp>
-#include <boost/spirit/home/phoenix/statement/detail/switch.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/mpl/not.hpp>
-
-namespace boost { namespace phoenix
-{
- template <typename Derived, typename Actor>
- struct switch_case_base
- {
- typedef Derived derived_t;
- typedef Actor actor_t;
- typedef typename Actor::no_nullary no_nullary;
-
- template <typename Env>
- struct result
- {
- typedef typename Actor::eval_type::template result<Env>::type type;
- };
-
- switch_case_base(Actor const& actor)
- : actor(actor) {}
-
- template <typename Env>
- typename result<Env>::type
- eval(Env const& env) const
- {
- return actor.eval(env);
- }
-
- Actor actor;
- };
-
- template <typename Actor, typename K, K Value>
- struct switch_case : switch_case_base<switch_case<Actor, K, Value>, Actor>
- {
- typedef switch_case_base<switch_case<Actor, K, Value>, Actor> base_t;
- static K const value = Value;
- static bool const is_default = false;
-
- switch_case(Actor const& actor)
- : base_t(actor) {}
- };
-
- template <typename Actor>
- struct default_case : switch_case_base<default_case<Actor>, Actor>
- {
- typedef switch_case_base<default_case<Actor>, Actor> base_t;
- static bool const is_default = true;
-
- default_case(Actor const& actor)
- : base_t(actor) {}
- };
-
- template <typename Cond>
- struct switch_gen
- {
- switch_gen(Cond const& cond)
- : cond(cond) {}
-
- template <typename Cases>
- typename lazy_enable_if<
- fusion::traits::is_sequence<Cases>
- , detail::switch_composite_actor<Cond, Cases>
- >::type
- operator[](Cases const& cases) const
- {
- typedef typename
- detail::switch_composite<Cond, Cases>
- switch_composite;
- return switch_composite::eval(cond, cases);
- }
-
- template <typename D, typename A>
- actor<typename detail::
- switch_composite<Cond, fusion::vector<actor<D> > >::type>
- operator[](switch_case_base<D, A> const& case_) const
- {
- typedef typename
- detail::switch_composite<Cond, fusion::vector<actor<D> > >
- switch_composite;
- return switch_composite::eval(cond,
- fusion::vector<actor<D> >(static_cast<D const&>(case_)));
- }
-
- Cond cond;
- };
-
- template <typename Cond>
- inline switch_gen<typename as_actor<Cond>::type>
- switch_(Cond const& cond)
- {
- return switch_gen<typename as_actor<Cond>::type>(
- as_actor<Cond>::convert(cond));
- }
-
- template <int N, typename A0>
- switch_case<typename as_actor<A0>::type, int, N>
- case_(A0 const& _0)
- {
- return switch_case<typename as_actor<A0>::type, int, N>
- (as_actor<A0>::convert(_0));
- }
-
- template <typename A0>
- default_case<typename as_actor<A0>::type>
- default_(A0 const& _0)
- {
- return default_case<typename as_actor<A0>::type>
- (as_actor<A0>::convert(_0));
- }
-
- template <typename D0, typename A0, typename D1, typename A1>
- inline typename detail::compose_case_a<D0, D1>::type
- operator,(
- switch_case_base<D0, A0> const& _0
- , switch_case_base<D1, A1> const& _1
- )
- {
- return detail::compose_case_a<D0, D1>::eval(
- static_cast<D0 const&>(_0)
- , static_cast<D1 const&>(_1)
- );
- }
-
- template <typename Seq, typename D, typename A>
- inline typename
- lazy_enable_if<
- fusion::traits::is_sequence<Seq>
- , detail::compose_case_b<Seq, D>
- >::type
- operator,(Seq const& seq, switch_case_base<D, A> const& case_)
- {
- return detail::compose_case_b<Seq, D>::eval(
- seq, static_cast<D const&>(case_));
- }
-
- // Implementation of routines in detail/switch.hpp that depend on
- // the completeness of default_case.
- namespace detail {
- template <typename Cases>
- typename ensure_default<Cases>::type
- ensure_default<Cases>::eval(Cases const& cases, mpl::false_)
- {
- actor<default_case<actor<null_actor> > > default_
- = default_case<actor<null_actor> >(nothing);
- return fusion::push_front(cases, default_);
- }
- }
-}}
-
-#endif