Skip to content

File NPProgressDisplay.h

File List > core > NPProgressDisplay.h

Go to the documentation of this file

#ifndef NPProgressDisplay_h
#define NPProgressDisplay_h 1

#include <chrono>
#include <iomanip>
#include <iostream>

#include "NPTerminalColor.h"

namespace nptool {

  class ProgressDisplay {
   public:
    ProgressDisplay(long long event_to_process, long long size_to_read,
                    std::chrono::milliseconds interval = std::chrono::milliseconds(500));
    ~ProgressDisplay(){};

   private:
    long long m_event_processed;
    long long m_event_to_process;
    long long m_size_read;
    long long m_size_to_read;
    std::chrono::milliseconds m_interval; // interval of time to redisplay progress
    bool m_odd_even;
    std::chrono::time_point<std::chrono::system_clock> m_begin;
    std::string m_line; // buffer line to print

   public:
    void MakeLine(bool force = false);
    void AttemptDisplay(long long event_processed = -1, long long size_read = -1, bool force = false);
    void ForceDisplay(long long event_processed = -1, long long size_read = -1);
  };

} // namespace nptool
#endif