//---------------------------------------------------------------------------// // Copyright (c) 2013-2014 Kyle Lutz // // 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 // // See http://boostorg.github.com/compute for more information. //---------------------------------------------------------------------------// #ifndef BOOST_COMPUTE_INTEROP_VTK_DATA_ARRAY_HPP #define BOOST_COMPUTE_INTEROP_VTK_DATA_ARRAY_HPP #include #include #include #include #include #include #include namespace boost { namespace compute { /// Copies the values in \p data to \p buffer. template inline void vtk_copy_data_array_to_buffer(const vtkDataArray *data, buffer_iterator buffer, command_queue &queue = system::default_queue()); /// \internal_ template inline void vtk_copy_data_array_to_buffer(const vtkDataArrayTemplate *data, buffer_iterator buffer, command_queue &queue = system::default_queue()) { vtkDataArrayTemplate *data_ = const_cast *>(data); const T *data_ptr = static_cast(data_->GetVoidPointer(0)); size_t data_size = data_->GetNumberOfComponents() * data_->GetNumberOfTuples(); ::boost::compute::copy_n(data_ptr, data_size, buffer, queue); } /// Copies the values in the range [\p first, \p last) to \p data. template inline void vtk_copy_buffer_to_data_array(buffer_iterator first, buffer_iterator last, vtkDataArray *data, command_queue &queue = system::default_queue()); /// \internal_ template inline void vtk_copy_buffer_to_data_array(buffer_iterator first, buffer_iterator last, vtkDataArrayTemplate *data, command_queue &queue = system::default_queue()) { T *data_ptr = static_cast(data->GetVoidPointer(0)); ::boost::compute::copy(first, last, data_ptr, queue); } } // end compute namespace } // end boost namespace #endif // BOOST_COMPUTE_INTEROP_VTK_DATA_ARRAY_HPP