1 #ifndef TAGPARSER_PROGRESS_FEEDBACK_H
2 #define TAGPARSER_PROGRESS_FEEDBACK_H
15 using Callback = std::function<void(ActualProgressFeedback &feedback)>;
20 const std::string &
step()
const;
33 std::uint8_t m_stepPercentage;
34 std::uint8_t m_overallPercentage;
42 template <
typename ActualProgressFeedback>
44 : m_callback(callback)
45 , m_percentageOnlyCallback(percentageOnlyCallback)
47 , m_overallPercentage(0)
56 template <
typename ActualProgressFeedback>
58 : m_callback(callback)
59 , m_percentageOnlyCallback(percentageOnlyCallback)
61 , m_overallPercentage(0)
79 return m_stepPercentage;
88 return m_overallPercentage;
95 template <
typename ActualProgressFeedback>
99 m_stepPercentage = stepPercentage;
101 m_callback(*
static_cast<ActualProgressFeedback *
>(
this));
109 template <
typename ActualProgressFeedback>
113 m_stepPercentage = stepPercentage;
115 m_callback(*
static_cast<ActualProgressFeedback *
>(
this));
123 template <
typename ActualProgressFeedback>
126 m_stepPercentage = stepPercentage;
127 if (m_percentageOnlyCallback) {
128 m_percentageOnlyCallback(*
static_cast<ActualProgressFeedback *
>(
this));
129 }
else if (m_callback) {
130 m_callback(*
static_cast<ActualProgressFeedback *
>(
this));
139 template <
typename ActualProgressFeedback>
142 updateStepPercentage(
static_cast<std::uint8_t
>(stepPercentage * 100.0));
149 template <
typename ActualProgressFeedback>
152 m_overallPercentage = overallPercentage;
153 if (m_percentageOnlyCallback) {
154 m_percentageOnlyCallback(*
static_cast<ActualProgressFeedback *
>(
this));
155 }
else if (m_callback) {
156 m_callback(*
static_cast<ActualProgressFeedback *
>(
this));
198 std::atomic_bool m_aborted;
228 return m_aborted.load();
238 return m_aborted.store(
true);
278 #endif // TAGPARSER_PROGRESS_FEEDBACK_H