diff options
Diffstat (limited to 'boost/numeric/odeint/iterator/integrate/detail/functors.hpp')
-rw-r--r-- | boost/numeric/odeint/iterator/integrate/detail/functors.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/boost/numeric/odeint/iterator/integrate/detail/functors.hpp b/boost/numeric/odeint/iterator/integrate/detail/functors.hpp new file mode 100644 index 0000000000..b239217ac4 --- /dev/null +++ b/boost/numeric/odeint/iterator/integrate/detail/functors.hpp @@ -0,0 +1,70 @@ +/* + [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 <utility> + +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 |