My Project
TimerLog.hpp
1 /*
2  Copyright 2014 Statoil ASA.
3 
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18  */
19 #ifndef OPM_TIMERLOG_HPP
20 #define OPM_TIMERLOG_HPP
21 
22 #include <time.h>
23 
24 #include <memory>
25 #include <sstream>
26 #include <string>
27 
28 #include <opm/common/OpmLog/StreamLog.hpp>
29 
30 /*
31  This class is a simple demonstration of how the logging framework
32  can be used to create a simple very special case logging facility.
33 */
34 
35 namespace Opm {
36 
37 class TimerLog : public StreamLog {
38 public:
39  static const int64_t StartTimer = 4096;
40  static const int64_t StopTimer = 8192;
41 
42  explicit TimerLog(const std::string& logFile);
43  explicit TimerLog(std::ostream& os);
44 
45  void clear();
46  ~TimerLog() {};
47 
48 protected:
49  void addMessageUnconditionally(int64_t messageFlag,
50  const std::string& message) override;
51 private:
52  clock_t m_start;
53  std::ostringstream m_work;
54 };
55 
56 typedef std::shared_ptr<TimerLog> TimerLogPtr;
57 typedef std::shared_ptr<const TimerLog> TimerLogConstPtr;
58 } // namespace Opm
59 
60 #endif
61 
Definition: StreamLog.hpp:31
Definition: TimerLog.hpp:37
void addMessageUnconditionally(int64_t messageFlag, const std::string &message) override
This is the method subclasses should override.
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29