123456789101112131415161718192021222324252627282930313233343536 |
- #pragma once
-
- #include <string>
- #include <mutex>
- #include <iostream>
-
- namespace logger {
-
- extern std::mutex mut;
-
- class Timer {
- public:
- Timer();
-
- void restart();
- void print(std::ostream &os) const;
-
- private:
- double start_;
- };
-
- template<typename T>
- inline void log(const T &msg) {
- std::unique_lock<std::mutex> lock(mut);
- std::cerr << msg << '\n';
- }
-
- template<typename T>
- inline void log(const T &msg, const Timer &t) {
- std::unique_lock<std::mutex> lock(mut);
- std::cerr << msg;
- t.print(std::cerr);
- std::cerr << '\n';
- }
-
- }
|