LCOV - code coverage report
Current view: top level - app/include/Log - ProgressLogger.hpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 3 100.0 %
Date: 2023-08-17 16:45:52 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <exception>
       4             : #include <iomanip>
       5             : #include <iostream>
       6             : 
       7             : namespace Log {
       8             : class ProgressLogger;
       9             : }  // namespace Log
      10             : 
      11             : namespace std {
      12             : inline Log::ProgressLogger &fixed(Log::ProgressLogger &logger);
      13             : }  // namespace std
      14             : 
      15             : namespace Log {
      16           3 : class ProgressLogger {
      17             :    public:
      18             :     struct Progress {
      19             :         double p;
      20             : 
      21             :         Progress(double progress);
      22             :     };
      23             : 
      24             :     struct Elapsed {
      25             :         double t;
      26             : 
      27             :         Elapsed(double t);
      28             :     };
      29             : 
      30             :     struct ETA {
      31             :         double t;
      32             : 
      33             :         ETA(double eta);
      34             :     };
      35             : 
      36             :     struct StartMessage {};
      37             :     struct EndMessage {};
      38             : 
      39             :     struct StartText {};
      40             :     struct EndText {};
      41             : 
      42             :     virtual ProgressLogger &operator<<(const Progress &progress) = 0;
      43             :     virtual ProgressLogger &operator<<(const Elapsed &elapsed)   = 0;
      44             :     virtual ProgressLogger &operator<<(const ETA &eta)           = 0;
      45             :     virtual ProgressLogger &operator<<(const StartText &)        = 0;
      46             :     virtual ProgressLogger &operator<<(const EndText &)          = 0;
      47             :     virtual ProgressLogger &operator<<(const StartMessage &)     = 0;
      48             :     virtual ProgressLogger &operator<<(const EndMessage &)       = 0;
      49             : 
      50             :     virtual ProgressLogger &operator<<(const int &t)           = 0;
      51             :     virtual ProgressLogger &operator<<(const unsigned long &t) = 0;
      52             :     virtual ProgressLogger &operator<<(const double &t)        = 0;
      53             :     virtual ProgressLogger &operator<<(const char *t)          = 0;
      54             : 
      55             :     virtual ProgressLogger &operator<<(std::_Setprecision f) = 0;
      56             : 
      57             :     ProgressLogger &operator<<(ProgressLogger &(*pf)(ProgressLogger &));
      58             : 
      59             :    protected:
      60             :     friend ProgressLogger & ::std::fixed(ProgressLogger &logger);
      61             :     virtual ProgressLogger &fixed() = 0;
      62             : };
      63             : 
      64             : }  // namespace Log
      65             : 
      66             : namespace std {
      67           3 : inline Log::ProgressLogger &fixed(Log::ProgressLogger &logger) {
      68           3 :     return logger.fixed();
      69             : }
      70             : }  // namespace std

Generated by: LCOV version 1.14