Program Listing for File output.hpp

Return to documentation for file (src/output/output.hpp)

#pragma once

#include <iostream>

#include "config.h"

#ifndef __LILI_LPRINT_RATE
#define __LILI_LPRINT_RATE 10000
#endif

namespace lili::output {
class LiliCout {
 public:
  LiliCout() : enabled(true) {}
  LiliCout(bool enabled) : enabled(enabled) {}

  template <typename T>
  LiliCout& operator<<(const T& t) {
    if (enabled) std::cout << t;
    return *this;
  }

  LiliCout& operator<<(std::ostream& (*f)(std::ostream&)) {
    if (enabled) std::cout << f;
    return *this;
  }

  bool enabled;
};

// Function declaration
void PrintVersion();
void PrintVersion(LiliCout& out);

void PrintHelp();
void PrintHelp(LiliCout& out);

void LiliExit(int status);
}  // namespace lili::output