]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/module.h
simplifying native string handling, see #11061
[wxWidgets.git] / include / wx / module.h
index a35aab0e5e8418eb2ee041cd7c5db3e8356e9727..652edead222afcfa7e7c49ac722a46ae67d46829 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        module.h
+// Name:        wx/module.h
 // Purpose:     Modules handling
 // Author:      Wolfram Gloger/adapted by Guilhem Lavaux
 // Modified by:
 
 #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
@@ -68,11 +69,19 @@ protected:
     // 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
@@ -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
@@ -101,4 +118,3 @@ private:
 };
 
 #endif // _WX_MODULE_H_
-