diff options
Diffstat (limited to 'boost/compute/iterator')
-rw-r--r-- | boost/compute/iterator/buffer_iterator.hpp | 17 | ||||
-rw-r--r-- | boost/compute/iterator/counting_iterator.hpp | 6 | ||||
-rw-r--r-- | boost/compute/iterator/function_input_iterator.hpp | 2 | ||||
-rw-r--r-- | boost/compute/iterator/permutation_iterator.hpp | 6 | ||||
-rw-r--r-- | boost/compute/iterator/strided_iterator.hpp | 10 | ||||
-rw-r--r-- | boost/compute/iterator/transform_iterator.hpp | 6 | ||||
-rw-r--r-- | boost/compute/iterator/zip_iterator.hpp | 4 |
7 files changed, 29 insertions, 22 deletions
diff --git a/boost/compute/iterator/buffer_iterator.hpp b/boost/compute/iterator/buffer_iterator.hpp index cd68058f64..de2395a552 100644 --- a/boost/compute/iterator/buffer_iterator.hpp +++ b/boost/compute/iterator/buffer_iterator.hpp @@ -58,13 +58,20 @@ struct buffer_iterator_index_expr size_t index, const memory_object::address_space address_space, const IndexExpr &expr) - : m_buffer(buffer), + : m_buffer(buffer.get(), false), m_index(index), m_address_space(address_space), m_expr(expr) { } + ~buffer_iterator_index_expr() + { + // set buffer to null so that its reference count will + // not be decremented when its destructor is called + m_buffer.get() = 0; + } + operator T() const { BOOST_STATIC_ASSERT_MSG(boost::is_integral<IndexExpr>::value, @@ -73,10 +80,10 @@ struct buffer_iterator_index_expr return buffer_value<T>(m_buffer, size_t(m_expr) * sizeof(T)); } - const buffer &m_buffer; - size_t m_index; - memory_object::address_space m_address_space; - IndexExpr m_expr; + const buffer m_buffer; + const size_t m_index; + const memory_object::address_space m_address_space; + const IndexExpr m_expr; }; template<class T, class IndexExpr> diff --git a/boost/compute/iterator/counting_iterator.hpp b/boost/compute/iterator/counting_iterator.hpp index 304c1e05cf..384486bcb3 100644 --- a/boost/compute/iterator/counting_iterator.hpp +++ b/boost/compute/iterator/counting_iterator.hpp @@ -47,14 +47,14 @@ struct counting_iterator_index_expr { typedef T result_type; - counting_iterator_index_expr(const T &init, const IndexExpr &expr) + counting_iterator_index_expr(const T init, const IndexExpr &expr) : m_init(init), m_expr(expr) { } - const T &m_init; - IndexExpr m_expr; + const T m_init; + const IndexExpr m_expr; }; template<class T, class IndexExpr> diff --git a/boost/compute/iterator/function_input_iterator.hpp b/boost/compute/iterator/function_input_iterator.hpp index bd89b6c0fc..bb8f0d5d09 100644 --- a/boost/compute/iterator/function_input_iterator.hpp +++ b/boost/compute/iterator/function_input_iterator.hpp @@ -53,7 +53,7 @@ struct function_input_iterator_expr { } - Function m_function; + const Function m_function; }; template<class Function> diff --git a/boost/compute/iterator/permutation_iterator.hpp b/boost/compute/iterator/permutation_iterator.hpp index 8a7f97a402..a0d2dbfbc5 100644 --- a/boost/compute/iterator/permutation_iterator.hpp +++ b/boost/compute/iterator/permutation_iterator.hpp @@ -60,9 +60,9 @@ struct permutation_iterator_access_expr { } - ElementIterator m_element_iter; - IndexIterator m_index_iter; - IndexExpr m_expr; + const ElementIterator m_element_iter; + const IndexIterator m_index_iter; + const IndexExpr m_expr; }; template<class ElementIterator, class IndexIterator, class IndexExpr> diff --git a/boost/compute/iterator/strided_iterator.hpp b/boost/compute/iterator/strided_iterator.hpp index 52e7f07bd8..eb342dc33d 100644 --- a/boost/compute/iterator/strided_iterator.hpp +++ b/boost/compute/iterator/strided_iterator.hpp @@ -56,8 +56,8 @@ struct stride_expr { } - IndexExpr m_index_expr; - Stride m_stride; + const IndexExpr m_index_expr; + const Stride m_stride; }; template<class IndexExpr, class Stride> @@ -90,9 +90,9 @@ struct strided_iterator_index_expr { } - Iterator m_input_iter; - const Stride& m_stride; - IndexExpr m_index_expr; + const Iterator m_input_iter; + const Stride m_stride; + const IndexExpr m_index_expr; }; template<class Iterator, class Stride, class IndexExpr> diff --git a/boost/compute/iterator/transform_iterator.hpp b/boost/compute/iterator/transform_iterator.hpp index c040922f9d..08ff6ee4d4 100644 --- a/boost/compute/iterator/transform_iterator.hpp +++ b/boost/compute/iterator/transform_iterator.hpp @@ -76,9 +76,9 @@ struct transform_iterator_index_expr { } - InputIterator m_input_iter; - UnaryFunction m_transform_expr; - IndexExpr m_index_expr; + const InputIterator m_input_iter; + const UnaryFunction m_transform_expr; + const IndexExpr m_index_expr; }; template<class InputIterator, class UnaryFunction, class IndexExpr> diff --git a/boost/compute/iterator/zip_iterator.hpp b/boost/compute/iterator/zip_iterator.hpp index 2860d73a93..a4af6a3034 100644 --- a/boost/compute/iterator/zip_iterator.hpp +++ b/boost/compute/iterator/zip_iterator.hpp @@ -92,8 +92,8 @@ struct zip_iterator_index_expr { } - IteratorTuple m_iterators; - IndexExpr m_index_expr; + const IteratorTuple m_iterators; + const IndexExpr m_index_expr; }; /// \internal_ |