Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
it compiles!
[graphlib.git] / MainDrawingThread.h
1 #ifndef MAIN_DRAWING_THREAD_H
2 #define MAIN_DRAWING_THREAD_H
3
4 #include <DrawingThreadCore.h>
5
6 class MainDrawingThread: public DrawingThreadCore {
7 private:
8     int argc;
9     char **argv;
10
11     template<int (*f)()>
12     static int mainWrapper(int, char **)
13     {
14         return f();
15     }
16
17     template<int (*f)(int, char **)>
18     static int mainWrapper(int argc, char **argv)
19     {
20         return f(argc, argv);
21     }
22
23     static int (*main)(int, char **);
24
25     int runForReal();
26
27 public:
28     MainDrawingThread(int argc_, char **argv_);
29         
30 };
31
32 #define main_thread(...)                                \
33     /* int */ main_thread(__VA_ARGS__);                 \
34     int (*MainDrawingThread::main)(int, char **) =      \
35         MainDrawingThread::mainWrapper<main_thread>;    \
36     int main_thread(__VA_ARGS__)
37
38 #endif // !MAIN_DRAWING_THREAD_H