Chris@16: /* Chris@16: [auto_generated] Chris@16: boost/numeric/odeint/util/resizer.hpp Chris@16: Chris@16: [begin_description] Chris@16: Implementation of the resizers. Chris@16: [end_description] Chris@16: Chris@101: Copyright 2011-2012 Mario Mulansky Chris@101: Copyright 2011 Karsten Ahnert Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. Chris@16: (See accompanying file LICENSE_1_0.txt or Chris@16: copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: */ Chris@16: Chris@16: Chris@16: #ifndef BOOST_NUMERIC_ODEINT_UTIL_RESIZER_HPP_INCLUDED Chris@16: #define BOOST_NUMERIC_ODEINT_UTIL_RESIZER_HPP_INCLUDED Chris@16: Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace numeric { Chris@16: namespace odeint { Chris@16: Chris@16: template< class ResizeWrappedState , class State > Chris@16: bool adjust_size_by_resizeability( ResizeWrappedState &x , const State &y , boost::true_type ) Chris@16: { Chris@16: if ( !same_size( x.m_v , y ) ) Chris@16: { Chris@16: resize( x.m_v , y ); Chris@16: return true; Chris@16: } Chris@16: else Chris@16: return false; Chris@16: } Chris@16: Chris@16: template< class ResizeWrappedState , class State > Chris@16: bool adjust_size_by_resizeability( ResizeWrappedState & /* x */ , const State & /* y */ , boost::false_type ) Chris@16: { Chris@16: return false; Chris@16: } Chris@16: Chris@16: struct always_resizer Chris@16: { Chris@16: template< class State , class ResizeFunction > Chris@16: bool adjust_size( const State &x , ResizeFunction f ) Chris@16: { Chris@16: return f( x ); Chris@16: } Chris@16: }; Chris@16: Chris@16: Chris@16: struct initially_resizer Chris@16: { Chris@16: Chris@16: bool m_initialized; Chris@16: Chris@16: initially_resizer() : m_initialized( false ) Chris@16: { } Chris@16: Chris@16: template< class State , class ResizeFunction > Chris@16: bool adjust_size( const State &x , ResizeFunction f ) Chris@16: { Chris@16: if( !m_initialized ) Chris@16: { Chris@16: m_initialized = true; Chris@16: return f( x ); Chris@16: } else Chris@16: return false; Chris@16: } Chris@16: }; Chris@16: Chris@16: Chris@16: struct never_resizer Chris@16: { Chris@16: template< class State , class ResizeFunction > Chris@16: bool adjust_size( const State &x , ResizeFunction f ) Chris@16: { Chris@16: return false; Chris@16: } Chris@16: }; Chris@16: Chris@16: Chris@16: } Chris@16: } Chris@16: } Chris@16: Chris@16: #endif // BOOST_NUMERIC_ODEINT_UTIL_RESIZER_HPP_INCLUDED