#define COMBINE1(X,Y,Z) X##Y
#define COMBINE(X,Y,Z) COMBINE1(X,Y,Z)
//-----------------------------------------------------------------------------
#define BEFORE_MAIN_START_DEFFERED_TASK_0_ARG(M_TaskID,\
M_TaskType, M_Priority)\
class M_TaskID {\
public:\
M_TaskID() {\
sBeforeMainStart.addTask(\
new M_TaskType(), M_Priority);\
}\
} s##M_TaskID;
//-----------------------------------------------------------------------------
#define BEFORE_MAIN_START_DEFFERED_TASK_1_ARG(M_TaskID,\
M_TaskType, M_Arg1, M_Priority)\
class M_TaskID {\
public:\
M_TaskID() {\
sBeforeMainStart.addTask(\
new M_TaskType(M_Arg1), M_Priority);\
}\
} s##M_TaskID;
//-----------------------------------------------------------------------------
#define BEFORE_MAIN_START_DEFFERED_TASK_2_ARG(M_TaskID,\
M_TaskType, M_Arg1, M_Arg2, M_Priority)\
class M_TaskID {\
public:\
M_TaskID() {\
sBeforeMainStart.addTask(\
new M_TaskType(M_Arg1, M_Arg2), M_Priority);\
}\
} s##M_TaskID;
//-----------------------------------------------------------------------------
#define PERFORM_BEFORE_MAIN_START_DEFFERED_ACTIONS()\
sBeforeMainStart.performTaskQueue();