HDK
|
#include <GA_SplittableRange.h>
Public Member Functions | |
GA_SplittableRange () | |
Default constructor; object must be assigned before use. More... | |
GA_SplittableRange (const GA_Range &range) | |
Construct a splittable range from any arbitrary range. More... | |
GA_SplittableRange (const GA_SplittableRange &range) | |
Copy c-tor. More... | |
GA_SplittableRange (GA_SplittableRange &&range) noexcept | |
Move c-tor. More... | |
~GA_SplittableRange () | |
GA_SplittableRange & | operator= (const GA_SplittableRange &that) |
GA_SplittableRange & | operator= (GA_SplittableRange &&that) noexcept |
bool | canMultiThread () const |
Convenience method to test whether we can multi-thread. More... | |
GA_Size | getPageCount () const |
Return the number of pages. More... | |
GA_Offset | getFirstOffsetInPage (GA_Size relative_page) const |
Get the offset of the first element in a page. More... | |
GA_Range | getPageElementRange (GA_Size relative_page) const |
Get an iterator over the elements in a given page. More... | |
GA_Range | getJobElementRange (const UT_JobInfo &info) const |
Get a range of elements for a given job. More... | |
bool | split (GA_SplittableRange &d1, GA_SplittableRange &d2) const |
Split this range into two new ranges by splitting the RTI. More... | |
GA_SplittableRange (GA_SplittableRange &range, UT_Split) | |
bool | is_divisible () const |
GA_PageIterator | beginPages () const |
GA_PageIterator | beginPages (const UT_JobInfo &jobinfo) const |
Public Member Functions inherited from GA_Range | |
bool | empty () const |
Determine whether a range is empty. More... | |
GA_Range (const GA_IndexMap &map, const GA_OffsetList &offsetlist, GA_Size start=0, GA_Size end=-1) | |
GA_Range (const GA_ElementGroup &group, bool complement=false) | |
GA_Range (const GA_IndexMap &map, const GA_ElementGroup *group, bool complement=false) | |
GA_Range (const GA_Detail &geo, GA_Offset point, GA_AttributeOwner owner, pointref, bool harden) | |
GA_Range (const GA_Detail &geo, const GA_Range &point_range, GA_AttributeOwner type, pointref, bool harden) | |
GA_Range (const GA_Detail &geo, GA_Offset prim, GA_AttributeOwner owner, primitiveref, bool harden) | |
GA_Range (const GA_Detail &geo, const GA_Range &primitive_range, GA_AttributeOwner type, primitiveref, bool harden) | |
GA_Range (const GA_Detail &geo, const GA_Range &primitive_range, GA_AttributeOwner type, primitiveref, ordered, bool harden) | |
GA_Range (const GA_IndexMap &map, includetemporaries) | |
void | adopt (GA_RangeTypeInterface *r) |
bool | isValid () const |
Check whether range is valid (i.e. has an implementation) More... | |
GA_AttributeOwner | getOwner () const |
Query type of element. More... | |
bool | isEmpty () const |
Check whether the range is empty. More... | |
GA_Size | getMaxEntries () const |
Get an upper bound on the range. More... | |
GA_Size | getEntries () const |
Get an accurate count of the entries in the range. More... | |
bool | areTraversalDeletionsSafe () const |
bool | canContainDuplicates () const |
const GA_RangeMemberQuery * | allocMemberQuery () const |
const GA_RangeTypeInterface * | getRTI () const |
Accessor for RTI. More... | |
GA_Range () | |
GA_Range (const GA_RangeTypeInterface &range) | |
GA_Range (const GA_Range &src) | |
GA_Range (GA_Range &&src) noexcept | |
~GA_Range () | |
GA_Iterator | begin () const |
enditerator | end () const |
GA_Range (const GA_Range &src, ordered, bool descending=false) | |
GA_Range (const GA_Range &src, safedeletions) | |
GA_Range (const GA_IndexMap &map, emptyrange) | |
GA_Range (const GA_IndexMap &map) | |
GA_Range (const GA_IndexMap &map, GA_Offset start, GA_Offset end) | |
GA_Range (const GA_IndexMap &map, GA_Index start, GA_Index end, ordered) | |
GA_Range (const GA_IndexMap &map, GA_Index start, GA_Index end, GA_Size step, ordered) | |
GA_Range (const GA_ElementGroup &group, ignore_order, bool complement=false) | |
GA_Range (const GA_IndexMap &map, const GA_ElementGroup *group, ignore_order, bool complement=false) | |
const GA_Range & | operator= (const GA_Range &src) |
const GA_Range & | operator= (GA_Range &&src) noexcept |
bool | operator== (const GA_Range &src) const |
Static Public Member Functions | |
static GA_Range | divideWork (const GA_Range &r, const UT_JobInfo &j) |
Static method to divide work for UT_ThreadedAlgorithm. More... | |
Additional Inherited Members | |
Public Types inherited from GA_Range | |
typedef GA_Iterator | const_iterator |
typedef GA_Iterator | iterator |
A range which can be split into multiple ranges for threading
A GA_SplittableRange can be split into separate ranges. All split ranges are guaranteed to not cross page boundaries, so each split range can be worked on by independent threads.
The range conforms to tbb::range semantics, but also provides methods for UT_ThreadedAlgorithm.
Definition at line 37 of file GA_SplittableRange.h.
|
inline |
Default constructor; object must be assigned before use.
Definition at line 41 of file GA_SplittableRange.h.
GA_SplittableRange::GA_SplittableRange | ( | const GA_Range & | range | ) |
Construct a splittable range from any arbitrary range.
GA_SplittableRange::GA_SplittableRange | ( | const GA_SplittableRange & | range | ) |
Copy c-tor.
|
noexcept |
Move c-tor.
|
inline |
Definition at line 48 of file GA_SplittableRange.h.
|
inline |
UT_ParallelUtil interface
Definition at line 55 of file GA_SplittableRange.h.
GA_PageIterator GA_SplittableRange::beginPages | ( | ) | const |
Create an iterator over the pages in the range
GA_PageIterator GA_SplittableRange::beginPages | ( | const UT_JobInfo & | jobinfo | ) | const |
Create an iterator over the pages in the range
|
inline |
Convenience method to test whether we can multi-thread.
Definition at line 67 of file GA_SplittableRange.h.
|
inlinestatic |
Static method to divide work for UT_ThreadedAlgorithm.
Definition at line 88 of file GA_SplittableRange.h.
Get the offset of the first element in a page.
Definition at line 73 of file GA_SplittableRange.h.
GA_Range GA_SplittableRange::getJobElementRange | ( | const UT_JobInfo & | info | ) | const |
Get a range of elements for a given job.
|
inline |
Return the number of pages.
Definition at line 70 of file GA_SplittableRange.h.
Get an iterator over the elements in a given page.
|
inline |
UT_ParallelUtil interface
Definition at line 60 of file GA_SplittableRange.h.
GA_SplittableRange& GA_SplittableRange::operator= | ( | const GA_SplittableRange & | that | ) |
|
noexcept |
|
inline |
Split this range into two new ranges by splitting the RTI.
Definition at line 94 of file GA_SplittableRange.h.