7 #ifndef __thread_SpannedRange_h__ 8 #define __thread_SpannedRange_h__ 24 class FE_DL_EXPORT Span:
public Vector<2,Real>
31 class FE_DL_EXPORT MultiSpan
37 { m_spanArray.clear(); }
38 U32 spanCount(
void)
const 39 {
return m_spanArray.size(); }
40 Span& span(U32 a_spanIndex)
42 FEASSERT(a_spanIndex<m_spanArray.size());
43 return m_spanArray[a_spanIndex];
45 const Span& span(U32 a_spanIndex)
const 47 FEASSERT(a_spanIndex<m_spanArray.size());
48 return m_spanArray[a_spanIndex];
51 void add(Real a_start,Real a_end);
52 void add(
const Span& a_rSpan)
53 { add(a_rSpan[0],a_rSpan[1]); }
54 void add(
const MultiSpan& rOther);
57 Real valueAt(U32 a_valueIndex)
const;
58 U32 valueCount(
void)
const;
68 class FE_DL_EXPORT Iterator
72 m_spSpannedRange(a_spSpannedRange),
79 FEASSERT(m_spSpannedRange.isValid());
81 m_spSpannedRange->atomicCount();
85 Real value(
void) {
return m_value; }
87 {
return m_atomicIndex>m_atomicCount+1; }
92 if(m_valueIndex>=m_valueCount)
120 m_postAtomic.clear();
124 MultiSpan& addAtomic(
void);
126 U32 atomicCount(
void)
const {
return m_atomArray.size(); }
128 MultiSpan& atomic(U32 a_index)
129 {
return m_atomArray[a_index]; }
130 const MultiSpan& atomic(U32 a_index)
const 131 {
return m_atomArray[a_index]; }
133 MultiSpan& postAtomic(
void) {
return m_postAtomic; }
134 MultiSpan& nonAtomic(
void) {
return m_nonAtomic; }
135 const MultiSpan& nonAtomic(
void)
const {
return m_nonAtomic; }
137 BWORD empty(
void)
const 138 {
return !m_atomArray.size() &&
139 !m_postAtomic.spanCount() &&
140 !m_nonAtomic.spanCount(); }
144 U32 valueCount(
void)
const;
164 MultiSpan m_postAtomic;
165 MultiSpan m_nonAtomic;
170 return a_rspSpannedRange.isNull()?
"NULL": a_rspSpannedRange->brief();
176 #endif // __thread_SpannedRange_h__ Heap-based support for classes participating in fe::ptr <>
Definition: Counted.h:35
kernel
Definition: namespace.dox:3
SpannedRange of jobs.
Definition: SpannedRange.h:20
Dense vector - size fixed by template.
Definition: Vector.h:19
Automatically reference-counted string container.
Definition: String.h:128
Intrusive Smart Pointer.
Definition: src/core/ptr.h:53