template<std::size_t N>
Progress class
Contents
Simple progress class for outputing progress indicators during a task
This is a helper class to abstract away the details of using Print::
Constructors, destructors, conversion operators
- Progress(bool feedback, const std::array<std::string, N>& prefix, const std::array<std::string, N>& legend, std::array<int, N>&& max = std::array<int, N>()) explicit
Public functions
- void start(const Print& print, const std::string& msg)
- void start(const Print& print, const std::string& msg, std::array<int, N>&& max)
- Start counting sub-tasks outputing an intial task message and set max number of items to be expected per sub-task.
-
template<std::size_t i>void inc(const Print& print)
- void end(const Print& print)
Function documentation
template<std::size_t N>
tk:: Progress<N>:: Progress(bool feedback,
const std::array<std::string, N>& prefix,
const std::array<std::string, N>& legend,
std::array<int, N>&& max = std::array<int, N>()) explicit
Parameters | |
---|---|
feedback in | Whether to send sub-task feedback to host |
prefix in | Strings to output prefixing the progress report |
legend in | Legend for each prefix to output at start |
max in | Array of integers equaling the max number of items to be expected per sub-task |
Constructor
template<std::size_t N>
void tk:: Progress<N>:: start(const Print& print,
const std::string& msg)
Parameters | |
---|---|
print in | Pretty printer object to use for printing progress |
msg in | Message to output to screen. This message should be descriptive of all the sub-tasks we are responsible for. I.e., this is usually a list of multiple sub-tasks happening at the same time. Appending to msg we also output the legend of subtasks in parentheses. |
Start counting sub-tasks outputing an intial task message
template<std::size_t N>
void tk:: Progress<N>:: start(const Print& print,
const std::string& msg,
std::array<int, N>&& max)
Start counting sub-tasks outputing an intial task message and set max number of items to be expected per sub-task.
Parameters | |
---|---|
print in | Pretty printer object to use for printing progress |
msg in | Message to output to screen. This message should be descriptive of all the sub-tasks we are responsible for. I.e., this is usually a list of multiple sub-tasks happening at the same time. |
max in | Array of integers equaling the max number of items to be expected per sub-task |
This function can be used to do the same as start( msg ) and update/reset the max number of items per sub-task in case they are not all yet available when the constructor is called.
template<std::size_t N>
template<std::size_t i>
void tk:: Progress<N>:: inc(const Print& print)
Parameters | |
---|---|
print in | Pretty printer object to use for printing progress |
Receive an update to a sub-task counter and update progress report The template argument indexes the sub-task. A compile-time assert emits an error in case it is out of bounds.
template<std::size_t N>
void tk:: Progress<N>:: end(const Print& print)
Parameters | |
---|---|
print in | Pretty printer object to use for printing progress |
Finish progress report updating it one last time When this function is called, all sub-tasks are assumed to be finished, i.e., assumed to have reached their respective maximum values. Thus we update our 'done' array to be equal to 'max' and output the progress report one final time before outputing 'done'. When this function is called it is possible that not all sub-task counters have reached their maximum, which can happen if the final reduction (if exists), signaling the absolute end of a task (consisting of multiple sub-tasks we count counters for), is scheduled before (or is faster) than as the individual sub-task counting messages arrive. Even if that is the case, this call "officially" finishes all sub-tasks, and outputs the progress report using the max values for all sub-tasks to leave a consistent screen output finishing the task.