Main.h
1
26
27#ifndef COSMO_MAIN_COMPONENT_H
28#define COSMO_MAIN_COMPONENT_H
29
30#include <Pt/Cosmo/Api.h>
31#include <Pt/Cosmo/Component.h>
32#include <Pt/Cosmo/ComponentPlugin.h>
33
34namespace Pt {
35
36namespace Cosmo {
37
38class MainImpl;
39class MainPlugin;
41
50class PT_COSMO_API Main : public Component
51{
52 public:
53 template <typename I>
54 I* getInterface();
55
56 public:
63 Main(int& argc, char** argv, ComponentManager& cm);
64
67 virtual ~Main();
68
73 void run();
74
75 MainImpl& impl();
76
77 private:
78 MainPlugin* _mainPlugin;
79 MainImpl* _impl;
80};
81
84class MainFactory
85{
86 public:
89 explicit MainFactory(Main& main)
90 : _main(&main)
91 {}
92
93 Component* create()
94 { return _main; }
95
96 void destroy(Component* instance)
97 { }
98
99 private:
100 Main* _main;
101};
102
105class MainPlugin : public ComponentPlugin<Main, MainFactory>
106{
107 public:
108 static const char* FeatureId()
109 { return "Cosmo.Main"; }
110
111 static const char* ClassId()
112 { return "Cosmo.Main"; }
113
114 static const char* Info()
115 { return "Cosmo.Default"; }
116
117 public:
118 MainPlugin(Main& m);
119};
120
121} // namespace Cosmo
122
123} // namespace Pt
124
125#endif // include guard
Default component manager.
Definition ComponentManager.h:53
Default component plugin.
Definition ComponentPlugin.h:105
Component()
Constructor.
Main component.
Definition Main.h:51
void run()
Launches the application.
Main(int &argc, char **argv, ComponentManager &cm)
Constructs the main component.
virtual ~Main()
Destructor.
Cosmo Component Model.
Definition Api.h:53
Core module.
Definition Allocator.h:33