]> git.saurik.com Git - wxWidgets.git/blame - include/wx/module.h
wxPrivateDataObject works under MSW as well (hopefully it still does under
[wxWidgets.git] / include / wx / module.h
CommitLineData
c801d85f
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: module.h
3// Purpose: Modules handling
4// Author: Wolfram Gloger/adapted by Guilhem Lavaux
5// Modified by:
6// Created: 04/11/98
7// RCS-ID: $Id$
8// Copyright: (c) Wolfram Gloger and Guilhem Lavaux
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
34138703
JS
12#ifndef _WX_MODULEH__
13#define _WX_MODULEH__
c801d85f
KB
14
15#ifdef __GNUG__
8aa4edd2 16 #pragma interface "module.h"
c801d85f
KB
17#endif
18
19#include "wx/object.h"
20#include "wx/list.h"
c801d85f 21
8aa4edd2
VZ
22// declare a linked list of modules
23class wxModule;
24WX_DECLARE_LIST(wxModule, wxModuleList);
25
26// declaring a class derived from wxModule will automatically create an
27// instance of this class on program startup, call its OnInit() method and call
28// OnExit() on program termination (but only if OnInit() succeeded)
29class WXDLLEXPORT wxModule : public wxObject
c801d85f
KB
30{
31public:
8aa4edd2
VZ
32 wxModule() {}
33 virtual ~wxModule() {}
c801d85f 34
8aa4edd2
VZ
35 // if module init routine returns FALSE application will fail to startup
36 bool Init() { return OnInit(); }
37 void Exit() { OnExit(); }
c801d85f
KB
38
39 // Override both of these
8aa4edd2
VZ
40 // called on program startup
41 virtual bool OnInit() = 0;
42 // called just before program termination, but only if OnInit()
43 // succeeded
44 virtual void OnExit() = 0;
c801d85f
KB
45
46 static void RegisterModule(wxModule* module);
8aa4edd2
VZ
47 static void RegisterModules();
48 static bool InitializeModules();
49 static void CleanUpModules();
c801d85f
KB
50
51protected:
8aa4edd2 52 static wxModuleList m_modules;
c801d85f 53
8aa4edd2 54 DECLARE_CLASS(wxModule)
c801d85f
KB
55};
56
8aa4edd2 57#endif // _WX_MODULEH__
c801d85f 58