Colobot
system.h
Go to the documentation of this file.
1 /*
2  * This file is part of the Colobot: Gold Edition source code
3  * Copyright (C) 2001-2016, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsitec.ch; http://colobot.info; http://github.com/colobot
5  *
6  * This program 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  * This program 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.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see http://gnu.org/licenses
18  */
19 
25 #pragma once
26 
27 #include <memory>
28 #include <string>
29 #include <vector>
30 
36 {
47 };
48 
56 {
57  SDR_OK,
58  SDR_CANCEL,
59  SDR_YES,
60  SDR_NO
61 };
62 
68 {
75 };
76 
77 /*
78  * Forward declaration of time stamp struct
79  * SystemTimeStamp should only be used in a pointer context.
80  * The implementation details are hidden because of platform dependence.
81  */
82 struct SystemTimeStamp;
83 
92 {
93 public:
94  virtual ~CSystemUtils();
95 
97  static std::unique_ptr<CSystemUtils> Create();
98 
100  virtual void Init() = 0;
101 
103  virtual SystemDialogResult SystemDialog(SystemDialogType, const std::string &title, const std::string &message) = 0;
104 
106  TEST_VIRTUAL SystemDialogResult ConsoleSystemDialog(SystemDialogType type, const std::string& title, const std::string& message);
107 
109  TEST_VIRTUAL SystemTimeStamp* CreateTimeStamp();
110 
112  TEST_VIRTUAL void DestroyTimeStamp(SystemTimeStamp *stamp);
113 
115  TEST_VIRTUAL void CopyTimeStamp(SystemTimeStamp *dst, SystemTimeStamp *src);
116 
118  virtual void GetCurrentTimeStamp(SystemTimeStamp *stamp) = 0;
119 
121 
122  TEST_VIRTUAL float TimeStampDiff(SystemTimeStamp *before, SystemTimeStamp *after, SystemTimeUnit unit = STU_SEC);
123 
125 
126  virtual long long TimeStampExactDiff(SystemTimeStamp *before, SystemTimeStamp *after) = 0;
127 
129  virtual std::string GetDataPath();
130 
132  virtual std::string GetLangPath();
133 
135  virtual std::string GetSaveDir();
136 
138  virtual void Usleep(int usecs) = 0;
139 
140 private:
141  std::vector<std::unique_ptr<SystemTimeStamp>> m_timeStamps;
142 };
milliseconds
Definition: system.h:72
TEST_VIRTUAL void DestroyTimeStamp(SystemTimeStamp *stamp)
Destroys a time stamp object.
Definition: system.cpp:153
virtual void GetCurrentTimeStamp(SystemTimeStamp *stamp)=0
Returns a time stamp associated with current time.
virtual void Init()=0
Performs platform-specific initialization.
microseconds
Definition: system.h:74
virtual void Usleep(int usecs)=0
Sleep for given amount of microseconds.
SystemDialogType
Type of system dialog.
Definition: system.h:35
Warning message.
Definition: system.h:40
virtual long long TimeStampExactDiff(SystemTimeStamp *before, SystemTimeStamp *after)=0
Returns the exact (in nanosecond units) difference between two timestamps.
Yes/No question.
Definition: system.h:44
static std::unique_ptr< CSystemUtils > Create()
Creates system utils for specific platform.
Definition: system.cpp:41
virtual std::string GetSaveDir()
Returns the save dir location.
Definition: system.cpp:194
TEST_VIRTUAL SystemDialogResult ConsoleSystemDialog(SystemDialogType type, const std::string &title, const std::string &message)
Displays a fallback system dialog using console.
Definition: system.cpp:59
Error message.
Definition: system.h:42
Information message.
Definition: system.h:38
virtual std::string GetLangPath()
Returns the translations path.
Definition: system.cpp:189
TEST_VIRTUAL float TimeStampDiff(SystemTimeStamp *before, SystemTimeStamp *after, SystemTimeUnit unit=STU_SEC)
Returns a difference between two timestamps in given time unit.
Definition: system.cpp:167
seconds
Definition: system.h:70
SystemTimeUnit
Time unit.
Definition: system.h:67
SystemDialogResult
Result of system dialog.
Definition: system.h:55
virtual SystemDialogResult SystemDialog(SystemDialogType, const std::string &title, const std::string &message)=0
Displays a system dialog.
Ok/Cancel question.
Definition: system.h:46
Platform-specific utils.
Definition: system.h:91
Definition: system_linux.h:31
TEST_VIRTUAL void CopyTimeStamp(SystemTimeStamp *dst, SystemTimeStamp *src)
Copies the time stamp from src to dst.
Definition: system.cpp:162
virtual std::string GetDataPath()
Returns the data path (containing textures, levels, helpfiles, etc)
Definition: system.cpp:184
TEST_VIRTUAL SystemTimeStamp * CreateTimeStamp()
Creates a new time stamp object.
Definition: system.cpp:145