blob: 46b097517c430a82d97d1dbf1297dac58e0496a8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef DEF_APPLICATION_PROTO_H
#define DEF_APPLICATION_PROTO_H
#include <Binding/Process.class.h>
#include <String.class.h>
extern u32int start_dtors, end_dtors;
#define APP(t) static t the_app; \
Application *app = &the_app;
class Application {
public:
Process pr;
Application() : pr(Process::get()) {
//TODO : add default signal handlers
}
virtual ~Application() {}
virtual void init() {} //Do anything that can't be done in the constructor
virtual int run() = 0; //Application's main loop
virtual void doEvents() {
//TODO : handle signals (IPC featurs to come)
}
void exit(u32int ret) {
//Call static destructors
for(u32int * call = &start_dtors; call < &end_dtors; call++) {
((void (*)(void))*call)();
}
threadFinishedSyscall(ret);
}
};
extern Application *app;
#endif
|