#include "wx/object.h"
#include "wx/list.h"
+#include "wx/arrstr.h"
#include "wx/dynarray.h"
// declare a linked list of modules
-class WXDLLIMPEXP_BASE wxModule;
+class WXDLLIMPEXP_FWD_BASE wxModule;
WX_DECLARE_USER_EXPORTED_LIST(wxModule, wxModuleList, WXDLLIMPEXP_BASE);
// and an array of class info objects
// after that
void AddDependency(wxClassInfo *dep)
{
- wxCHECK_RET( dep, _T("NULL module dependency") );
+ wxCHECK_RET( dep, wxT("NULL module dependency") );
m_dependencies.Add(dep);
}
+ // same as the version above except it will look up wxClassInfo by name on
+ // its own
+ void AddDependency(const char *className)
+ {
+ m_namedDependencies.Add(className);
+ }
+
+
private:
// initialize module and Append it to initializedModules list recursively
// calling itself to satisfy module dependencies if needed
// could be initialized) and also empty m_modules itself
static void DoCleanUpModules(const wxModuleList& modules);
+ // resolve all named dependencies and add them to the normal m_dependencies
+ bool ResolveNamedDependencies();
+
- // module dependencies: contains
+ // module dependencies: contains wxClassInfo pointers for all modules which
+ // must be initialized before this one
wxArrayClassInfo m_dependencies;
- // used internally while initiliazing/cleaning up modules
+ // and the named dependencies: those will be resolved during run-time and
+ // added to m_dependencies
+ wxArrayString m_namedDependencies;
+
+ // used internally while initializing/cleaning up modules
enum
{
State_Registered, // module registered but not initialized yet