diff options
Diffstat (limited to 'boost/compute/container/detail/scalar.hpp')
-rw-r--r-- | boost/compute/container/detail/scalar.hpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/boost/compute/container/detail/scalar.hpp b/boost/compute/container/detail/scalar.hpp new file mode 100644 index 0000000000..7ecd86e540 --- /dev/null +++ b/boost/compute/container/detail/scalar.hpp @@ -0,0 +1,61 @@ +//---------------------------------------------------------------------------// +// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com> +// +// 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_CONTAINER_DETAIL_SCALAR_HPP +#define BOOST_COMPUTE_CONTAINER_DETAIL_SCALAR_HPP + +#include <boost/compute/buffer.hpp> +#include <boost/compute/detail/read_write_single_value.hpp> + +namespace boost { +namespace compute { +namespace detail { + +// scalar<T> provides a trivial "container" that stores a +// single value in a memory buffer on a compute device +template<class T> +class scalar +{ +public: + typedef T value_type; + + scalar(const context &context) + : m_buffer(context, sizeof(T)) + { + } + + ~scalar() + { + } + + T read(command_queue &queue) const + { + return read_single_value<T>(m_buffer, 0, queue); + } + + void write(const T &value, command_queue &queue) + { + write_single_value<T>(value, m_buffer, 0, queue); + } + + const buffer& get_buffer() const + { + return m_buffer; + } + +private: + buffer m_buffer; +}; + +} // end detail namespace +} // end compute namespace +} // end boost namespace + +#endif // BOOST_COMPUTE_CONTAINER_DETAIL_SCALAR_HPP |