test
[push-it] / src / timekeeper.h
1 /*
2     Copyright (C) <2010>  <Markus Scharnowski markus.scharnowski@gmail.com>
3
4     This program is free software: you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation, either version 3 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef TIMEKEEPER_H
18 #define TIMEKEEPER_H
19 #include <time.h>
20 #include <sys/time.h>
21 #include <cstdlib>
22 #include <string>
23
24 class timeKeeper
25 {
26 public:
27     timeKeeper();
28     int resetTimes();
29     int start();
30     int stop();
31     int update();
32     int pause();
33     int isPaused();
34     bool enableDateForStrings();
35     bool disableDateForStrings();
36     bool isDateForStringsEnabled();
37     double getDeltaLastToStart();
38     double getDeltaLastToPrev();
39     double getDeltaNowToStart();
40     double getDeltalNowToPrev();
41     std::string getStartTimeString();
42     std::string getLastTimeString();
43     std::string getNowTimeString();
44     std::string getPreviousTimeString();
45
46 private:
47     double getDelta(struct timeval tvLater, struct timeval tvEarlier);
48     std::string makeString(time_t timer);
49     int startPause();
50     int stopPause();
51
52     time_t timeStart;
53     time_t timeStop;
54     struct timeval tvStart;
55     struct timeval tvStop;
56
57     time_t timePrev;
58     time_t timeLast;
59     struct timeval tvPrev;
60     struct timeval tvLast;
61
62     struct timeval tvPauseStart;
63     struct timeval tvPauseStop;
64     double pauseTotalTimeSec;
65     double pauseTimeSec;
66
67     bool isRunning;
68     bool isPauseActive;
69     bool wasLastPauseLogged;
70     bool dateForStrings;
71 };
72
73 #endif // TIMEKEEPER_H