21 #ifndef __TBB_blocked_range3d_H 22 #define __TBB_blocked_range3d_H 24 #include "tbb_stddef.h" 25 #include "blocked_range.h" 31 template<
typename PageValue,
typename RowValue=PageValue,
typename ColValue=RowValue>
40 page_range_type my_pages;
41 row_range_type my_rows;
42 col_range_type my_cols;
47 RowValue row_begin, RowValue row_end,
48 ColValue col_begin, ColValue col_end ) :
49 my_pages(page_begin,page_end),
50 my_rows(row_begin,row_end),
51 my_cols(col_begin,col_end)
58 my_pages(page_begin,page_end,page_grainsize),
59 my_rows(row_begin,row_end,row_grainsize),
60 my_cols(col_begin,col_end,col_grainsize)
81 do_split(r, split_obj);
84 #if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES 93 do_split(r, proportion);
97 template <
typename Split>
102 my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
104 my_rows.my_begin = row_range_type::do_split(r.my_rows, split_obj);
108 my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
110 my_pages.my_begin = page_range_type::do_split(r.my_pages, split_obj);
116 const page_range_type&
pages()
const {
return my_pages;}
119 const row_range_type&
rows()
const {
return my_rows;}
122 const col_range_type&
cols()
const {
return my_cols;}
A 3-dimensional range that models the Range concept.
Definition: blocked_range3d.h:32
blocked_range< PageValue > page_range_type
Type for size of an iteration range.
Definition: blocked_range3d.h:35
static const bool is_splittable_in_proportion
Static field to support proportional split.
Definition: blocked_range3d.h:86
std::size_t size_type
Type for size of a range.
Definition: blocked_range.h:48
bool empty() const
True if range is empty.
Definition: blocked_range.h:82
const page_range_type & pages() const
The pages of the iteration space.
Definition: blocked_range3d.h:116
const col_range_type & cols() const
The columns of the iteration space.
Definition: blocked_range3d.h:122
size_type grainsize() const
The grain size for this range.
Definition: blocked_range.h:75
const row_range_type & rows() const
The rows of the iteration space.
Definition: blocked_range3d.h:119
bool empty() const
True if range is empty.
Definition: blocked_range3d.h:65
size_type size() const
Size of the range.
Definition: blocked_range.h:69
bool is_divisible() const
True if range is divisible into two pieces.
Definition: blocked_range3d.h:71
bool is_divisible() const
True if range is divisible.
Definition: blocked_range.h:86
The namespace tbb contains all components of the library.
Definition: parallel_for.h:44