00001
00030 #ifndef INC_MGUI_APPMULTI_H
00031 #define INC_MGUI_APPMULTI_H
00032
00033 #ifndef INC_MGUI_APPMAIN_H
00034 #include <mgui/appmain.h>
00035 #endif
00036
00037 namespace MGUI {
00038
00039 class APP_MULTI_MAIN;
00040
00041 #ifndef GENERATING_DOXYGEN_OUTPUT
00042 class APP_MULTI_AUTOREG {
00043 public:
00044 APP_MULTI_AUTOREG (
00045 const char *CmdParmStr
00046 ) : m_CmdParmStr(CmdParmStr), m_pNext(0) { }
00047 private:
00048 #ifndef GENERATING_DOXYGEN_OUTPUT
00049 const char *m_CmdParmStr;
00050 APP_MULTI_AUTOREG *m_pNext;
00051 #endif // GENERATING_DOXYGEN_OUTPUT
00052 virtual void v_ConstructInstance () = 0;
00053 #ifndef GENERATING_DOXYGEN_OUTPUT
00054 friend class APP_MULTI_MAIN;
00055 #endif // GENERATING_DOXYGEN_OUTPUT
00056 };
00057
00058 #define MGUI_APP_MULTI_REGISTER(basetype,parmstr) \
00059 class basetype##_AUTOREG : public MGUI::APP_MULTI_AUTOREG { \
00060 public: \
00061 basetype##_AUTOREG () : \
00062 MGUI::APP_MULTI_AUTOREG(parmstr) \
00063 { MGUI::APP_MULTI_MAIN::RegisterApp(this); } \
00064 private: \
00065 virtual void v_ConstructInstance () \
00066 { new basetype ; } \
00067 \
00068 }; \
00069 static basetype##_AUTOREG basetype##_AutoReg;
00070
00071 #endif // GENERATING_DOXYGEN_OUTPUT
00072
00073
00074 class APP_MULTI_MAIN : public APP_MAIN {
00075 public:
00076
00077 static void RegisterApp (APP_MULTI_AUTOREG *pAutoRegInstance);
00078
00079 APP_MULTI_MAIN () {}
00080
00081 ~APP_MULTI_MAIN () {}
00082
00083 private:
00084 #ifndef GENERATING_DOXYGEN_OUTPUT
00085
00086 virtual bool v_InitInstance ();
00087 #endif // GENERATING_DOXYGEN_OUTPUT
00088 };
00089
00090
00091 }
00092
00093 #endif // INC_MGUI_APPMULTI_H