Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
Application.hpp
1 
2 #pragma once
3 #include <memory>
4 #include <stack>
5 #include <functional>
6 #include <Covellite/Events/Events.hpp>
7 #include <Covellite/App/IApplication.hpp>
8 
9 class Application_test;
10 
11 namespace covellite
12 {
13 
14 namespace app
15 {
16 
17 class IWindow;
18 
49 class Application :
50  public IApplication
51 {
52  using Windows_t = ::std::stack<::std::shared_ptr<IWindow>>;
53  using Run_t = ::std::function<void(void)>;
54  using CreateApp_t = ::std::function<::std::unique_ptr<Application>(void)>;
55 
56 public:
57  class Continuous {};
58  class EventBased {};
59 
62 public:
63  // Итерфейс IApplication:
64  operator Events_t (void) const final { return m_Events; }
65 
66 public:
67  template<class>
68  static void Main(void *) noexcept;
69  ::std::string GetCommandLine(void) const;
71  const Run_t Run;
72 
73 protected:
74  template<class TWindow, class ... TArgs>
75  TWindow & MakeWindow(TArgs && ...);
76 
77 private:
78  static void Main(CreateApp_t, void *) noexcept;
79  VIRTUAL_MOCK bool PostCommand(bool);
80 
81 protected:
82  events::Events m_Events;
83 
84 private:
85  bool m_IsFocused = false;
86  Windows_t m_Windows;
87 
88 private:
89  explicit Application(const Run_t &);
90 
91 public:
92  explicit Application(Continuous);
93  explicit Application(EventBased);
94  virtual ~Application(void) noexcept;
95 
96 private:
97  friend Application_test;
98  FRIEND_TEST(Application_test, /*DISABLED_*/Test_MakeWindow);
99  FRIEND_TEST(Application_android_test, /*DISABLED_*/Test_OnTermWindow);
100  FRIEND_TEST(Application_android_test, /*DISABLED_*/Test_PostCommand);
101 };
102 
103 } // namespace app
104 
105 } // namespace covellite
106 
107 #include <Covellite\App\Application.inl>
android_poll_source
Definition: android_native_app_glue.h:90
covellite::app::Application::PostCommand
VIRTUAL_MOCK bool PostCommand(bool)
Функция вызова сигнала произошедшего события..
Definition: Application.android.cpp:233
covellite::app::Application::Continuous
Непрерывная отрисовка экрана (режим работы игры).
Definition: Application.hpp:57
covellite::events::Events
Класс входит в проект Covellite.Events Класс для работы с событиями фреймворка.
Definition: Events.hpp:36
covellite::app::IApplication
Класс входит в проект Covellite.App Интерфейсный класс приложения.
Definition: IApplication.hpp:28
android_app
Definition: android_native_app_glue.h:111
covellite::app::Application::Application
Application(const Run_t &)
Инициализирующий конструктор класса.
Definition: Application.android.cpp:35
covellite::app::Application::GetCommandLine
::std::string GetCommandLine(void) const
Функция получения параметров командной строки, которые были переданы программе ее при запуске.
Definition: Application.android.cpp:212
covellite::app::Application::Main
static void Main(void *) noexcept
Функция точки входа в программу.
Definition: Application.inl:58
covellite::app::Application::EventBased
Definition: Application.hpp:58
covellite::app::Application::Run
const Run_t Run
Объект функции запуска главного цикла программы.
Definition: Application.hpp:71
covellite::app::Application
Класс входит в проект Covellite.App Базовый класс приложения для Android.
Definition: Application.hpp:51