/* [auto_generated] boost/numeric/odeint/integrate/detail/functors.hpp [begin_description] some functors for the iterator based integrate routines [end_description] Copyright 2009-2013 Karsten Ahnert Copyright 2009-2013 Mario Mulansky 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_NUMERIC_ODEINT_INTEGRATE_DETAIL_FUNCTORS_HPP_INCLUDED #define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_FUNCTORS_HPP_INCLUDED #include namespace boost { namespace numeric { namespace odeint { namespace detail { template< class Observer > struct obs_caller { size_t &m_n; Observer m_obs; obs_caller( size_t &m , Observer &obs ) : m_n(m) , m_obs( obs ) {} template< class State , class Time > void operator()( std::pair< const State & , const Time & > x ) { typedef typename odeint::unwrap_reference< Observer >::type observer_type; observer_type &obs = m_obs; obs( x.first , x.second ); m_n++; } }; template< class Observer , class Time > struct obs_caller_time { Time &m_t; Observer m_obs; obs_caller_time( Time &t , Observer &obs ) : m_t(t) , m_obs( obs ) {} template< class State > void operator()( std::pair< const State & , const Time & > x ) { typedef typename odeint::unwrap_reference< Observer >::type observer_type; observer_type &obs = m_obs; obs( x.first , x.second ); m_t = x.second; } }; } // namespace detail } // namespace odeint } // namespace numeric } // namespace boost #endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_FUNCTORS_HPP_INCLUDED