123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*==============================================================================
- Copyright (c) 2005-2010 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 BOOST_PHOENIX_CORE_NOTHING_HPP
- #define BOOST_PHOENIX_CORE_NOTHING_HPP
- #include <boost/phoenix/core/limits.hpp>
- #include <boost/mpl/void.hpp>
- #include <boost/phoenix/core/actor.hpp>
- #include <boost/phoenix/core/call.hpp>
- #include <boost/phoenix/core/expression.hpp>
- #include <boost/phoenix/core/value.hpp>
- namespace boost { namespace phoenix
- {
- /////////////////////////////////////////////////////////////////////////////
- //
- // null_actor
- //
- // An actor that does nothing (a "bum", if you will :-).
- //
- /////////////////////////////////////////////////////////////////////////////
-
- namespace detail
- {
- struct nothing {};
- }
-
- namespace expression
- {
- struct null
- : expression::value<detail::nothing>
- {};
- }
-
- template<typename Dummy>
- struct is_custom_terminal<detail::nothing, Dummy>
- : mpl::true_
- {};
- template<typename Dummy>
- struct custom_terminal<detail::nothing, Dummy>
- {
- typedef void result_type;
- template <typename Context>
- void operator()(detail::nothing, Context &) const
- {
- }
- };
- typedef expression::null::type nothing_type BOOST_ATTRIBUTE_UNUSED;
- #ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
- nothing_type const BOOST_ATTRIBUTE_UNUSED nothing = {{{}}};
- #endif
- }}
- #endif
|