#ifndef MISSION_UTILITY_PROGRESSPRINTER_H_ #define MISSION_UTILITY_PROGRESSPRINTER_H_ #include /** * @brief Class which can be used to print the progress of processes in percent. * * @author J. Meier */ class ProgressPrinter { public: static constexpr float HALF_PERCENT = 0.5; static constexpr float ONE_PERCENT = 1; static constexpr float FIVE_PERCENT = 5; /** * @brief Constructor * * @param name Name of the process to monitor * @param numSteps Number of steps to execute * @param percentageResolution Distance between printed percentage steps. E.g. 5 means that * a printout will be generated after 0%, 5%, 10% etc. */ ProgressPrinter(std::string name, uint32_t numSteps, float percentageResolution = FIVE_PERCENT); virtual ~ProgressPrinter(); /** * @brief Will print the progress * * @param currentStep Current step from which to derive progress */ void print(uint32_t step); private: std::string name = ""; uint32_t numSteps = 0; float nextProgressPrint = 0; float percentageResolution = 0; }; #endif /* MISSION_UTILITY_PROGRESSPRINTER_H_ */