Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
it compiles!
[graphlib.git] / MainDrawingThread.h
index 88d22b2..fea59b3 100644 (file)
@@ -4,14 +4,35 @@
 #include <DrawingThreadCore.h>
 
 class MainDrawingThread: public DrawingThreadCore {
-public:
-    MainDrawingThread(int argc, char **argv);
-    ~MainDrawingThread();
+private:
+    int argc;
+    char **argv;
+
+    template<int (*f)()>
+    static int mainWrapper(int, char **)
+    {
+        return f();
+    }
+
+    template<int (*f)(int, char **)>
+    static int mainWrapper(int argc, char **argv)
+    {
+        return f(argc, argv);
+    }
+
+    static int (*main)(int, char **);
 
     int runForReal();
-    int runForReal(int argc, char **argv);
+
+public:
+    MainDrawingThread(int argc_, char **argv_);
+        
 };
 
-#define main_thread MainDrawingThread::runForReal
+#define main_thread(...)                                \
+    /* int */ main_thread(__VA_ARGS__);                 \
+    int (*MainDrawingThread::main)(int, char **) =      \
+        MainDrawingThread::mainWrapper<main_thread>;    \
+    int main_thread(__VA_ARGS__)
 
 #endif // !MAIN_DRAWING_THREAD_H