X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34138703c3997ce676a1e713d9ff9eb020640da7..b33f7651ae55310d7d76b0205e409464ba8af484:/include/wx/module.h diff --git a/include/wx/module.h b/include/wx/module.h index c91f0e126a..852b341db4 100644 --- a/include/wx/module.h +++ b/include/wx/module.h @@ -12,38 +12,56 @@ #ifndef _WX_MODULEH__ #define _WX_MODULEH__ -#ifdef __GNUG__ -#pragma interface "module.h" +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) + #pragma interface "module.h" #endif #include "wx/object.h" #include "wx/list.h" -#include "wx/setup.h" -class WXDLLEXPORT wxModule: public wxObject +// declare a linked list of modules +class wxModule; +WX_DECLARE_USER_EXPORTED_LIST(wxModule, wxModuleList, WXDLLIMPEXP_BASE); + +// declaring a class derived from wxModule will automatically create an +// instance of this class on program startup, call its OnInit() method and call +// OnExit() on program termination (but only if OnInit() succeeded) +class WXDLLIMPEXP_BASE wxModule : public wxObject { public: - wxModule(void) {} - ~wxModule(void) {} + wxModule() {} + virtual ~wxModule() {} + + // if module init routine returns FALSE application + // will fail to startup + + bool Init() { return OnInit(); } + void Exit() { OnExit(); } + + // Override both of these + // called on program startup - // If returns FALSE, quits the application immediately. - bool Init(void) { return OnInit(); } - void Exit(void) { OnExit(); } + virtual bool OnInit() = 0; - // Override both of these - virtual bool OnInit(void) = 0; - virtual void OnExit(void) = 0; + // called just before program termination, but only if OnInit() + // succeeded + + virtual void OnExit() = 0; static void RegisterModule(wxModule* module); - static bool RegisterModules(void); - static bool InitializeModules(void); - static void CleanUpModules(void); + static void RegisterModules(); + static bool InitializeModules(); + static void CleanUpModules(); + + // used by wxObjectLoader when unloading shared libs's + + static void UnregisterModule(wxModule* module); protected: - static wxList m_modules; + static wxModuleList m_modules; -DECLARE_CLASS(wxModule) + DECLARE_CLASS(wxModule) }; -#endif +#endif // _WX_MODULEH__