HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GA_SplittableRange Class Reference

#include <GA_SplittableRange.h>

+ Inheritance diagram for GA_SplittableRange:

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_SplittableRangeoperator= (const GA_SplittableRange &that)
 
GA_SplittableRangeoperator= (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_RangeMemberQueryallocMemberQuery () const
 
const GA_RangeTypeInterfacegetRTI () 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_Rangeoperator= (const GA_Range &src)
 
const GA_Rangeoperator= (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
 

Detailed Description

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.

Examples:
tetprim/GEO_PrimTetra.C.

Definition at line 37 of file GA_SplittableRange.h.

Constructor & Destructor Documentation

GA_SplittableRange::GA_SplittableRange ( )
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.

GA_SplittableRange::GA_SplittableRange ( GA_SplittableRange &&  range)
noexcept

Move c-tor.

GA_SplittableRange::~GA_SplittableRange ( )
inline

Definition at line 48 of file GA_SplittableRange.h.

GA_SplittableRange::GA_SplittableRange ( GA_SplittableRange range,
UT_Split   
)
inline

UT_ParallelUtil interface

Definition at line 55 of file GA_SplittableRange.h.

Member Function Documentation

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

bool GA_SplittableRange::canMultiThread ( ) const
inline

Convenience method to test whether we can multi-thread.

Definition at line 67 of file GA_SplittableRange.h.

static GA_Range GA_SplittableRange::divideWork ( const GA_Range r,
const UT_JobInfo j 
)
inlinestatic

Static method to divide work for UT_ThreadedAlgorithm.

Definition at line 88 of file GA_SplittableRange.h.

GA_Offset GA_SplittableRange::getFirstOffsetInPage ( GA_Size  relative_page) const
inline

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.

GA_Size GA_SplittableRange::getPageCount ( ) const
inline

Return the number of pages.

Definition at line 70 of file GA_SplittableRange.h.

GA_Range GA_SplittableRange::getPageElementRange ( GA_Size  relative_page) const

Get an iterator over the elements in a given page.

bool GA_SplittableRange::is_divisible ( ) const
inline

UT_ParallelUtil interface

Definition at line 60 of file GA_SplittableRange.h.

GA_SplittableRange& GA_SplittableRange::operator= ( const GA_SplittableRange that)
GA_SplittableRange& GA_SplittableRange::operator= ( GA_SplittableRange &&  that)
noexcept
bool GA_SplittableRange::split ( GA_SplittableRange d1,
GA_SplittableRange d2 
) const
inline

Split this range into two new ranges by splitting the RTI.

Definition at line 94 of file GA_SplittableRange.h.


The documentation for this class was generated from the following file: