11 #ifndef __GA_PageIterator__
12 #define __GA_PageIterator__
33 , myPageCount(range.getPageCount())
34 , myEndIterator(false)
37 myCurr = myJobInfo->nextTask();
40 : myRange(pit.myRange)
41 , myJobInfo(pit.myJobInfo)
43 , myPageCount(pit.myPageCount)
44 , myEndIterator(pit.myEndIterator)
52 myRange = src.myRange;
53 myJobInfo = src.myJobInfo;
55 myPageCount = src.myPageCount;
56 myEndIterator = src.myEndIterator;
62 if (myEndIterator || src.myEndIterator)
63 return atEnd() && src.
atEnd();
64 return myRange == src.myRange &&
65 myJobInfo == src.myJobInfo &&
66 myCurr == src.myCurr &&
67 myPageCount == src.myPageCount;
70 {
return !(*
this ==
src); }
76 return myRange.getFirstOffsetInPage(myCurr);
86 bool atEnd()
const {
return myCurr >= myPageCount; }
90 myCurr = myJobInfo->nextTask();
101 myRange.getPageElementRange(myCurr)); }
105 bool isEnd()
const {
return myEndIterator || atEnd(); }
121 #define GA_FOR_INFORANGE(info, full_range, IT_NAME) \
122 GA_SplittableRange lcl_prange(full_range); \
123 for (GA_PageIterator pit=lcl_prange.beginPages(info); \
124 !pit.atEnd(); ++pit) \
125 for (GA_Iterator IT_NAME = pit.begin(); !IT_NAME.atEnd(); ++IT_NAME)
129 #define GA_FOR_INFORANGE_BOSS(info, full_range, IT_NAME, boss) \
130 GA_SplittableRange lcl_prange(full_range); \
131 for (GA_PageIterator pit=lcl_prange.beginPages(info); \
132 !pit.atEnd() && !boss->opInterrupt(); ++pit) \
133 for (GA_Iterator IT_NAME = pit.begin(); !IT_NAME.atEnd(); ++IT_NAME)
136 #define GA_FOR_INFO_ALLPOINTS(gdp, info, IT_NAME) \
137 GA_SplittableRange lcl_prange(gdp->getPointRange()); \
138 for (GA_PageIterator pit=lcl_prange.beginPages(info); \
139 !pit.atEnd(); ++pit) \
140 for (GA_Iterator IT_NAME = pit.begin(); !IT_NAME.atEnd(); ++IT_NAME)
143 #define GA_FOR_INFO_ALLPOINTS_BOSS(gdp, info, IT_NAME, boss) \
144 GA_SplittableRange lcl_prange(gdp->getPointRange()); \
145 for (GA_PageIterator pit=lcl_prange.beginPages(info); \
146 !pit.atEnd() && !boss->opInterrupt(); ++pit) \
147 for (GA_Iterator IT_NAME = pit.begin(); !IT_NAME.atEnd(); ++IT_NAME)
151 #define GA_FOR_INFO_GROUP_POINTS_BOSS(gdp, pointgrp, info, IT_NAME, boss) \
152 GA_SplittableRange lcl_prange(gdp->getPointRange(pointgrp)); \
153 for (GA_PageIterator pit=lcl_prange.beginPages(info); \
154 !pit.atEnd() && !boss->opInterrupt(); ++pit) \
155 for (GA_Iterator IT_NAME = pit.begin(); !IT_NAME.atEnd(); ++IT_NAME)
GA_PageIterator(const GA_PageIterator &pit)
Iteration over a range of elements.
GA_PageIterator & operator=(const GA_PageIterator &src)
Assignment operator.
exint GA_Size
Defines the bit width for index and offset types in GA.
GA_Offset getFirstOffsetInPage() const
GA_Offset operator*() const
bool operator!=(const GA_PageIterator &src) const
GA_PageIterator(const GA_SplittableRange &range, const UT_JobInfo *jobinfo=NULL)
GA_Iterator begin() const
bool operator==(const GA_PageIterator &src) const
Equality operator.
GA_PageIterator & operator++()