35 laProgressiveTask::laProgressiveTask(
void)
37 _strCurrentLabel[0] =
'\0';
42 ::InitializeCriticalSection(&cs);
45 laProgressiveTask::~laProgressiveTask(
void)
47 ::DeleteCriticalSection(&cs);
50 void laProgressiveTask::progressIncrease(
double val,
char *str, ...)
52 ::EnterCriticalSection(&cs);
55 _dValue = M_MIN(1, (_dValue+val));
60 vsnprintf(_strCurrentLabel, 255, str, ap);
63 ::laSystemIntegrator::getEnvironment()->message(M_TRUE, _strCurrentLabel);
65 ::LeaveCriticalSection(&cs);
68 void laProgressiveTask::progressReset(
char *str, ...)
70 ::EnterCriticalSection(&cs);
77 vsnprintf(_strCurrentLabel, 255, str, ap);
80 ::laSystemIntegrator::getEnvironment()->message(M_TRUE, _strCurrentLabel);
83 ::LeaveCriticalSection(&cs);
88 ::EnterCriticalSection(&cs);
93 ASSERT(!_pST,
"Subtask already present.");
96 _pST->_dRange = dRange;
101 ASSERT(_pST,
"Nil subtask.");
103 _dValue += (_pST->progress()) * (_pST->_dRange);
104 strcpy(_strCurrentLabel, _pST->status());
109 ::LeaveCriticalSection(&cs);
112 double laProgressiveTask::progress()
114 ::EnterCriticalSection(&cs);
117 if(_pST) v += (_pST->progress()) * (_pST->_dRange);
119 ::LeaveCriticalSection(&cs);
124 char* laProgressiveTask::status()
126 if(_pST)
return _pST->status();
127 else return _strCurrentLabel;