summaryrefslogtreecommitdiff
path: root/boost/compute/iterator
diff options
context:
space:
mode:
Diffstat (limited to 'boost/compute/iterator')
-rw-r--r--boost/compute/iterator/buffer_iterator.hpp17
-rw-r--r--boost/compute/iterator/counting_iterator.hpp6
-rw-r--r--boost/compute/iterator/function_input_iterator.hpp2
-rw-r--r--boost/compute/iterator/permutation_iterator.hpp6
-rw-r--r--boost/compute/iterator/strided_iterator.hpp10
-rw-r--r--boost/compute/iterator/transform_iterator.hpp6
-rw-r--r--boost/compute/iterator/zip_iterator.hpp4
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_