X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34138703c3997ce676a1e713d9ff9eb020640da7..33ebfc3b9b542e2cefcab456e47a101311b74697:/include/wx/module.h diff --git a/include/wx/module.h b/include/wx/module.h index c91f0e126a..b67e426401 100644 --- a/include/wx/module.h +++ b/include/wx/module.h @@ -9,41 +9,60 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_MODULEH__ -#define _WX_MODULEH__ +#ifndef _WX_MODULE_H_ +#define _WX_MODULE_H_ -#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 WXDLLIMPEXP_BASE 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 the application + // will fail to startup - // If returns FALSE, quits the application immediately. - bool Init(void) { return OnInit(); } - void Exit(void) { OnExit(); } + bool Init() { return OnInit(); } + void Exit() { OnExit(); } // Override both of these - virtual bool OnInit(void) = 0; - virtual void OnExit(void) = 0; - static void RegisterModule(wxModule* module); - static bool RegisterModules(void); - static bool InitializeModules(void); - static void CleanUpModules(void); + // called on program startup + + virtual bool OnInit() = 0; + + // called just before program termination, but only if OnInit() + // succeeded + + virtual void OnExit() = 0; + + static void RegisterModule(wxModule *module); + 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_MODULE_H_