LCOV - code coverage report
Current view: top level - app/include/Log - ProgressLoggerJsonOStream.hpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 5 0.0 %
Date: 2023-08-17 16:45:52 Functions: 0 4 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <nlohmann/json.hpp>
       4             : 
       5             : #include "Log/ProgressLogger.hpp"
       6             : 
       7             : namespace Log {
       8             : class ProgressLoggerJsonOStream: public ProgressLogger {
       9             :     template<class T>
      10           0 :     ProgressLogger &send(const T &t) {
      11           0 :         if(s != TEXT)
      12           0 :             throw std::logic_error("Cannot send if state is not TEXT");
      13           0 :         textStream << t;
      14           0 :         return *this;
      15             :     }
      16             : 
      17             :    private:
      18             :     std::ostream &os;
      19             : 
      20             :     bool firstField = true;
      21             : 
      22             :     enum State {
      23             :         NO_MESSAGE,
      24             :         MESSAGE,
      25             :         TEXT
      26             :     };
      27             :     State s = NO_MESSAGE;
      28             : 
      29             :     std::stringstream textStream;
      30             :     nlohmann::json    jsonMessage;
      31             : 
      32             :    public:
      33             :     ProgressLoggerJsonOStream(std::ostream &os = std::cout);
      34             : 
      35             :     virtual ProgressLoggerJsonOStream &operator<<(const Progress &progress);
      36             :     virtual ProgressLoggerJsonOStream &operator<<(const Elapsed &elapsed);
      37             :     virtual ProgressLoggerJsonOStream &operator<<(const ETA &eta);
      38             :     virtual ProgressLoggerJsonOStream &operator<<(const StartText &);
      39             :     virtual ProgressLoggerJsonOStream &operator<<(const EndText &);
      40             :     virtual ProgressLoggerJsonOStream &operator<<(const StartMessage &);
      41             :     virtual ProgressLoggerJsonOStream &operator<<(const EndMessage &);
      42             : 
      43             :     virtual ProgressLoggerJsonOStream &operator<<(const int &t);
      44             :     virtual ProgressLoggerJsonOStream &operator<<(const unsigned long &t);
      45             :     virtual ProgressLoggerJsonOStream &operator<<(const double &t);
      46             :     virtual ProgressLoggerJsonOStream &operator<<(const char *t);
      47             : 
      48             :     virtual ProgressLoggerJsonOStream &operator<<(std::_Setprecision f);
      49             : 
      50             :    protected:
      51             :     virtual ProgressLoggerJsonOStream &fixed();
      52             : };
      53             : 
      54             : }  // namespace Log

Generated by: LCOV version 1.14