]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/module.h
set m_isBeingDeleted to true (only) in SendDestroyEvent(); call it as early as possib...
[wxWidgets.git] / include / wx / module.h
index 1e39f0e0030dc0637a685669cc1152477281975a..c620974f52048ede015ccf78d70f3025b9541eb9 100644 (file)
 
 #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
@@ -73,6 +74,14 @@ protected:
         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
@@ -84,11 +93,19 @@ private:
     // 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