71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | /* | ||
|  |  [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 |