Plasma Engine  2.0
Loading...
Searching...
No Matches
Application.h
1#pragma once
2
4
5#include <Foundation/Basics.h>
6
7#include <Foundation/Application/Implementation/ApplicationEntryPoint.h>
8#include <Foundation/Utilities/CommandLineUtils.h>
9
10#include <Foundation/Profiling/Profiling.h>
11
12class plApplication;
13
19PL_FOUNDATION_DLL void plRun(plApplication* pApplicationInstance);
20
22PL_FOUNDATION_DLL plResult plRun_Startup(plApplication* pApplicationInstance);
24PL_FOUNDATION_DLL void plRun_MainLoop(plApplication* pApplicationInstance);
26PL_FOUNDATION_DLL void plRun_Shutdown(plApplication* pApplicationInstance);
27
65class PL_FOUNDATION_DLL plApplication
66{
67 PL_DISALLOW_COPY_AND_ASSIGN(plApplication);
68
69public:
71 enum class Execution
72 {
73 Continue,
74 Quit,
75 };
76
79
81 virtual ~plApplication();
82
84 void SetApplicationName(plStringView sAppName);
85
87 const plString& GetApplicationName() const { return m_sAppName; }
88
94 virtual plResult BeforeCoreSystemsStartup();
95
101 virtual void AfterCoreSystemsStartup() {}
102
111
114
121
125 virtual void AfterCoreSystemsShutdown() {}
126
133 virtual void BeforeEnterBackground() {}
134
140 virtual void BeforeEnterForeground() {}
141
145 virtual Execution Run() = 0;
146
150 inline void SetReturnCode(plInt32 iReturnCode) { m_iReturnCode = iReturnCode; }
151
153 inline plInt32 GetReturnCode() const { return m_iReturnCode; }
154
156 virtual const char* TranslateReturnCode() const { return ""; }
157
160 void SetCommandLineArguments(plUInt32 uiArgumentCount, const char** pArguments);
161
163 static plApplication* GetApplicationInstance() { return s_pApplicationInstance; }
164
168 plUInt32 GetArgumentCount() const { return m_uiArgumentCount; }
169
171 const char* GetArgument(plUInt32 uiArgument) const;
172
174 const char** GetArgumentsArray() const { return m_pArguments; }
175
176 void EnableMemoryLeakReporting(bool bEnable) { m_bReportMemoryLeaks = bEnable; }
177
178 bool IsMemoryLeakReportingEnabled() const { return m_bReportMemoryLeaks; }
179
186 virtual void RequestQuit();
187
189 PL_ALWAYS_INLINE bool WasQuitRequested() const { return m_bWasQuitRequested; }
190
191protected:
192 bool m_bWasQuitRequested = false;
193
194private:
195 plInt32 m_iReturnCode = 0;
196
197 plUInt32 m_uiArgumentCount = 0;
198
199 const char** m_pArguments = nullptr;
200
201 bool m_bReportMemoryLeaks = true;
202
203 plString m_sAppName;
204
205 static plApplication* s_pApplicationInstance;
206
207 friend PL_FOUNDATION_DLL_FRIEND void plRun(plApplication* pApplicationInstance);
208 friend PL_FOUNDATION_DLL_FRIEND plResult plRun_Startup(plApplication* pApplicationInstance);
209 friend PL_FOUNDATION_DLL_FRIEND void plRun_MainLoop(plApplication* pApplicationInstance);
210 friend PL_FOUNDATION_DLL_FRIEND void plRun_Shutdown(plApplication* pApplicationInstance);
211};
Base class to be used by applications based on plEngine.
Definition Application.h:66
Execution
Defines the possible return values for the plApplication::Run() function.
Definition Application.h:72
friend PL_FOUNDATION_DLL_FRIEND void plRun(plApplication *pApplicationInstance)
Platform independent run function for main loop based systems (e.g. Win32, ..)
Definition MainLoop.cpp:90
virtual void AfterHighLevelSystemsShutdown()
Called after plStartup::ShutdownHighLevelSystems() has been executed.
Definition Application.h:113
virtual void BeforeCoreSystemsShutdown()
This function is called after the application main loop has run for the last time,...
Definition Application.h:120
virtual void BeforeEnterForeground()
This function is called whenever an application is resumed from background mode.
Definition Application.h:140
const plString & GetApplicationName() const
Returns the application name.
Definition Application.h:87
plInt32 GetReturnCode() const
Returns the currently set value that the application will return to the OS.
Definition Application.h:153
virtual void BeforeEnterBackground()
This function is called when an application is moved to the background.
Definition Application.h:133
friend PL_FOUNDATION_DLL_FRIEND void plRun_Shutdown(plApplication *pApplicationInstance)
[internal] Called by plRun()
Definition MainLoop.cpp:56
virtual ~plApplication()
Virtual destructor.
friend PL_FOUNDATION_DLL_FRIEND plResult plRun_Startup(plApplication *pApplicationInstance)
[internal] Called by plRun()
Definition MainLoop.cpp:12
virtual void AfterCoreSystemsStartup()
This function is called after basic engine initialization has been done.
Definition Application.h:101
friend PL_FOUNDATION_DLL_FRIEND void plRun_MainLoop(plApplication *pApplicationInstance)
[internal] Called by plRun()
Definition MainLoop.cpp:48
void SetReturnCode(plInt32 iReturnCode)
Sets the value that the application will return to the OS. You can call this function at any point du...
Definition Application.h:150
const char ** GetArgumentsArray() const
Returns the complete array of command line arguments that were passed to the application.
Definition Application.h:174
PL_ALWAYS_INLINE bool WasQuitRequested() const
Returns whether RequestQuit() was called.
Definition Application.h:189
virtual const char * TranslateReturnCode() const
If the return code is not zero, this function might be called to get a string to print the error code...
Definition Application.h:156
plUInt32 GetArgumentCount() const
Returns the number of command line arguments that were passed to the application.
Definition Application.h:168
virtual Execution Run()=0
Main run function which is called periodically. This function must be overridden.
static plApplication * GetApplicationInstance()
Returns the one instance of plApplication that is available.
Definition Application.h:163
virtual void BeforeHighLevelSystemsShutdown()
This function is called after the application main loop has run for the last time,...
Definition Application.h:110
virtual void AfterCoreSystemsShutdown()
This function is called after plStartup::ShutdownCoreSystems() has been called.
Definition Application.h:125
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54