32 #ifndef VSMC_THREAD_BLOCKED_RANGE_HPP
33 #define VSMC_THREAD_BLOCKED_RANGE_HPP
37 #define VSMC_RUNTIME_ASSERT_THREAD_BLOCKED_RANGE(begin, end, func) \
38 VSMC_RUNTIME_ASSERT((begin < end), ("**"#func"** INVALID RANGE"))
55 begin_(begin), end_(end), grainsize_(
grainsize)
58 template <
typename Split>
60 begin_(other.begin_), end_(other.end_), grainsize_(other.grainsize_)
63 begin_ = begin_ + (end_ - begin_) / 2;
70 const_iterator
begin ()
const {
return begin_;}
72 const_iterator
end ()
const {
return end_;}
74 size_type
size ()
const {
return static_cast<size_type
>(end_ - begin_);}
78 bool empty ()
const {
return !(begin_ < end_);}
84 const_iterator begin_;
91 #endif // VSMC_THREAD_BLOCKED_RANGE_HPP
bool is_divisible() const
size_type grainsize() const
const_iterator end() const
BlockedRange(T begin, T end, size_type grainsize=1)
#define VSMC_RUNTIME_ASSERT_THREAD_BLOCKED_RANGE(begin, end, func)
BlockedRange(BlockedRange< T > &other, Split)
const_iterator begin() const