Default progress is now infinite. Finite is moved to new class
This commit is contained in:
53
Progress.cpp
53
Progress.cpp
@@ -1,66 +1,39 @@
|
||||
#include "Progress.h"
|
||||
#include "ProgressFinite.h"
|
||||
#include <sstream>
|
||||
|
||||
using std::ostream;
|
||||
using std::string;
|
||||
using std::stringstream;
|
||||
|
||||
Progress::Progress(const string& message, size_t total, size_t current)
|
||||
: m_current(current),
|
||||
m_total(total),
|
||||
m_message(message)
|
||||
{
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
void Progress::set_total(size_t total)
|
||||
{
|
||||
m_total = total;
|
||||
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
void Progress::set_progress(size_t current)
|
||||
{
|
||||
m_current = current;
|
||||
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
Progress::Progress(const string& message, size_t current)
|
||||
: m_message(message),
|
||||
m_current(current)
|
||||
{}
|
||||
|
||||
void Progress::set_message(const std::string& message)
|
||||
{
|
||||
m_message = message;
|
||||
}
|
||||
|
||||
void Progress::set_progress(size_t current)
|
||||
{
|
||||
m_current = current;
|
||||
}
|
||||
|
||||
void Progress::increment_progress(size_t inc)
|
||||
{
|
||||
m_current += inc;
|
||||
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
string Progress::print_progress()
|
||||
string Progress::print_progress() const
|
||||
{
|
||||
stringstream out;
|
||||
out << m_current << "/" << m_total << " - " << m_message;
|
||||
out << m_current << " - " << m_message;
|
||||
return out.str();
|
||||
}
|
||||
|
||||
ostream& operator<<(ostream& out, const Progress& progress)
|
||||
{
|
||||
out << progress.m_current << "/" << progress.m_total;
|
||||
out << " - " << progress.m_message;
|
||||
out << progress.print_progress();
|
||||
return out;
|
||||
}
|
||||
|
||||
19
Progress.h
19
Progress.h
@@ -7,23 +7,20 @@
|
||||
class Progress
|
||||
{
|
||||
protected:
|
||||
size_t m_current;
|
||||
size_t m_total;
|
||||
|
||||
std::string m_message;
|
||||
size_t m_current;
|
||||
|
||||
public:
|
||||
Progress(const std::string& message, size_t total, size_t current = 0);
|
||||
Progress(const std::string& message, size_t current = 0);
|
||||
virtual ~Progress() = default;
|
||||
|
||||
void set_total(size_t total);
|
||||
void set_progress(size_t current);
|
||||
void set_message(const std::string& message);
|
||||
|
||||
void increment_progress(size_t inc = 1);
|
||||
|
||||
std::string print_progress();
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& os, const Progress& progress);
|
||||
virtual void set_progress(size_t current);
|
||||
virtual void increment_progress(size_t inc = 1);
|
||||
virtual std::string print_progress() const;
|
||||
};
|
||||
|
||||
std::ostream& operator<<(std::ostream& out, const Progress& progress);
|
||||
|
||||
#endif // PROGRESS_H_
|
||||
|
||||
53
ProgressFinite.cpp
Normal file
53
ProgressFinite.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
#include "ProgressFinite.h"
|
||||
#include <sstream>
|
||||
|
||||
using std::ostream;
|
||||
using std::string;
|
||||
using std::stringstream;
|
||||
|
||||
ProgressFinite::ProgressFinite(const string& message, size_t total, size_t current)
|
||||
: Progress(message, current),
|
||||
m_total(total)
|
||||
{
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
void ProgressFinite::set_total(size_t total)
|
||||
{
|
||||
m_total = total;
|
||||
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
void ProgressFinite::set_progress(size_t current)
|
||||
{
|
||||
m_current = current;
|
||||
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
void ProgressFinite::increment_progress(size_t inc)
|
||||
{
|
||||
m_current += inc;
|
||||
|
||||
if (m_current > m_total)
|
||||
{
|
||||
m_current = m_total;
|
||||
}
|
||||
}
|
||||
|
||||
string ProgressFinite::print_progress() const
|
||||
{
|
||||
stringstream out;
|
||||
out << m_current << "/" << m_total << " - " << m_message;
|
||||
return out.str();
|
||||
}
|
||||
22
ProgressFinite.h
Normal file
22
ProgressFinite.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef PROGRESS_FINITE_H_
|
||||
#define PROGRESS_FINITE_H_
|
||||
|
||||
#include "Progress.h"
|
||||
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
|
||||
class ProgressFinite : public Progress
|
||||
{
|
||||
protected:
|
||||
size_t m_total;
|
||||
public:
|
||||
ProgressFinite(const std::string& message, size_t total, size_t current = 0);
|
||||
|
||||
virtual void set_total(size_t total);
|
||||
virtual void set_progress(size_t current) override;
|
||||
virtual void increment_progress(size_t inc = 1);
|
||||
virtual std::string print_progress() const override;
|
||||
};
|
||||
|
||||
#endif // PROGRESS_FINITE_H_
|
||||
26
ProgressInfinite.h
Normal file
26
ProgressInfinite.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef PROGRESS_INFINITE_H_
|
||||
#define PROGRESS_INFINITE_H_
|
||||
|
||||
#include "Progress.h"
|
||||
|
||||
class ProgressInfinite : public Progress
|
||||
{
|
||||
protected:
|
||||
size_t m_current;
|
||||
|
||||
std::string m_message;
|
||||
|
||||
public:
|
||||
Progress(const std::string& message, size_t current = 0);
|
||||
|
||||
virtual void set_progress(size_t current);
|
||||
void set_message(const std::string& message);
|
||||
|
||||
virtual void increment_progress(size_t inc = 1);
|
||||
|
||||
virtual std::string print_progress();
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& os, const Progress& progress);
|
||||
};
|
||||
|
||||
#endif // PROGRESS_INFINITE_H_
|
||||
@@ -1,4 +1,4 @@
|
||||
all:
|
||||
g++ main.cpp ../Progress.cpp ../StatusBarManager.cpp -o example
|
||||
g++ main.cpp ../Progress.cpp ../ProgressFinite.cpp ../StatusBarManager.cpp -o example
|
||||
|
||||
.PHONY: all
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../Progress.h"
|
||||
#include "../ProgressFinite.h"
|
||||
#include "../StatusBarManager.h"
|
||||
|
||||
using namespace std;
|
||||
@@ -28,8 +29,8 @@ void INT_handler(int sig)
|
||||
int main()
|
||||
{
|
||||
signal(SIGINT, INT_handler);
|
||||
Progress p("Normal", 10);
|
||||
Progress p2("Test", 10);
|
||||
Progress p("Normal");
|
||||
ProgressFinite p2("Test", 10);
|
||||
StatusBarManager manager;
|
||||
g_manager = &manager;
|
||||
manager.add_progress_message(&p);
|
||||
|
||||
Reference in New Issue
Block a user