diff options
Diffstat (limited to 'boost/numeric/odeint/external/compute/compute_resize.hpp')
-rw-r--r-- | boost/numeric/odeint/external/compute/compute_resize.hpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/boost/numeric/odeint/external/compute/compute_resize.hpp b/boost/numeric/odeint/external/compute/compute_resize.hpp new file mode 100644 index 0000000000..013a7acc41 --- /dev/null +++ b/boost/numeric/odeint/external/compute/compute_resize.hpp @@ -0,0 +1,90 @@ +/* + [auto_generated] + boost/numeric/odeint/external/compute/compute_resize.hpp + + [begin_description] + Enable resizing for Boost.Compute vector + [end_description] + + Copyright 2009-2011 Karsten Ahnert + Copyright 2009-2011 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_EXTERNAL_COMPUTE_COMPUTE_RESIZE_HPP_DEFINED +#define BOOST_NUMERIC_ODEINT_EXTERNAL_COMPUTE_COMPUTE_RESIZE_HPP_DEFINED + +#include <boost/compute/container/vector.hpp> + +#include <boost/numeric/odeint/util/copy.hpp> + +namespace boost { +namespace numeric { +namespace odeint { + +template< class T, class A > +struct is_resizeable< boost::compute::vector< T , A > > +{ + struct type : public boost::true_type { }; + const static bool value = type::value; +}; + +template< class T, class A > +struct same_size_impl< boost::compute::vector< T, A > , boost::compute::vector< T, A > > +{ + static bool same_size( const boost::compute::vector< T, A > &x , const boost::compute::vector< T, A > &y ) + { + return x.size() == y.size(); + } +}; + +template< class T, class A > +struct resize_impl< boost::compute::vector< T, A > , boost::compute::vector< T, A > > +{ + static void resize( boost::compute::vector< T, A > &x , const boost::compute::vector< T, A > &y ) + { + x.resize( y.size() ); + } +}; + + +template< class Container1, class T, class A > +struct copy_impl< Container1 , boost::compute::vector< T, A > > +{ + static void copy( const Container1 &from , boost::compute::vector< T, A > &to ) + { + boost::compute::copy( boost::begin( from ) , boost::end( from ) , boost::begin( to ) ); + } +}; + +template< class T, class A, class Container2 > +struct copy_impl< boost::compute::vector< T, A > , Container2 > +{ + static void copy( const boost::compute::vector< T, A > &from , Container2 &to ) + { + boost::compute::copy( boost::begin( from ) , boost::end( from ) , boost::begin( to ) ); + } +}; + +template< class T, class A > +struct copy_impl< boost::compute::vector< T, A > , boost::compute::vector< T, A > > +{ + static void copy( const boost::compute::vector< T, A > &from , boost::compute::vector< T, A > &to ) + { + boost::compute::copy( boost::begin( from ) , boost::end( from ) , boost::begin( to ) ); + } +}; + + + + +} // odeint +} // numeric +} // boost + + +#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_COMPUTE_COMPUTE_RESIZE_HPP_DEFINED |