5 Log::Log(std::ostream &_ostream,
int _verbosity,
bool _show_clock) {
6 reset(_ostream, _verbosity, _show_clock);
22 using namespace boost::chrono;
23 auto curr_time = steady_clock::now();
24 return duration_cast<duration<double> >(curr_time -
m_start_time).count();
33 using namespace boost::chrono;
34 auto curr_time = steady_clock::now();
35 return duration_cast<duration<double> >(curr_time -
m_lap_start_time).count();
47 void Log::reset(std::ostream &_ostream,
int _verbosity,
bool _show_clock) {
56 Log::operator std::ostream &() {
68 auto is_int = [](std::string s) {
70 if(s.empty() || !isdigit(s[0])) {
71 return std::make_pair(
false, val);
74 val = strtol(s.c_str(), &p, 10);
75 return std::make_pair(*p == 0 && val >= 0 && val <= 100, val);
82 else if(s ==
"none") {
83 return std::make_pair(
true, 0);
85 else if(s ==
"quiet") {
86 return std::make_pair(
true, 5);
88 else if(s ==
"standard") {
89 return std::make_pair(
true, 10);
91 else if(s ==
"verbose") {
92 return std::make_pair(
true, 20);
94 else if(s ==
"debug") {
95 return std::make_pair(
true, 100);
98 return std::make_pair(
false, 0);
106 std::cout <<
"Time: " <<
time_s() <<
" (s)";
117 fptr(static_cast<std::ostream &>(log));
Log(std::ostream &_ostream=std::cout, int _verbosity=standard, bool _show_clock=false)
Construct a Log.
boost::chrono::steady_clock::time_point m_start_time
boost::chrono::steady_clock::time_point m_lap_start_time
static std::pair< bool, int > verbosity_level(std::string s)
Read verbosity level from a string.
friend Log & operator<<(Log &log, const T &msg_details)
void reset(std::ostream &_ostream=std::cout, int _verbosity=standard, bool _show_clock=false)
void set_verbosity(int _verbosity)
bool m_print
Whether to print.
int m_verbosity
If m_verbosity >= required verbosity, then print.