/* * Copyright Andrey Semashev 2007 - 2014. * 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) */ /*! * \file as_action.hpp * \author Andrey Semashev * \date 30.03.2008 * * This header contains function object adapter for compatibility with Boost.Spirit actions interface requirements. */ #ifndef BOOST_LOG_UTILITY_FUNCTIONAL_AS_ACTION_HPP_INCLUDED_ #define BOOST_LOG_UTILITY_FUNCTIONAL_AS_ACTION_HPP_INCLUDED_ #include #include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif namespace boost { BOOST_LOG_OPEN_NAMESPACE //! Function object adapter for Boost.Spirit actions template< typename FunT > struct as_action_adapter { typedef typename FunT::result_type result_type; BOOST_DEFAULTED_FUNCTION(as_action_adapter(), {}) explicit as_action_adapter(FunT const& fun) : m_fun(fun) {} template< typename AttributeT, typename ContextT > result_type operator() (AttributeT const& attr, ContextT const& ctx, bool& pass) const { return m_fun(attr); } private: FunT m_fun; }; template< typename FunT > BOOST_FORCEINLINE as_action_adapter< FunT > as_action(FunT const& fun) { return as_action_adapter< FunT >(fun); } BOOST_LOG_CLOSE_NAMESPACE // namespace log } // namespace boost #include #endif // BOOST_LOG_UTILITY_FUNCTIONAL_AS_ACTION_HPP_INCLUDED_