]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/module.cpp
fix the incoherence pointed out by ifacecheck between wx docs, that documents usage...
[wxWidgets.git] / src / common / module.cpp
index 9f867b4c25980e85b528e7df4ed6c7fbdf3e5c8e..230b8aa577442b4d4770c0682635283dfc55847a 100644 (file)
@@ -79,6 +79,10 @@ bool wxModule::DoInitializeModule(wxModule *module,
 
     module->m_state = State_Initializing;
 
+    // translate named dependencies to the normal ones first
+    if ( !module->ResolveNamedDependencies() )
+      return false;
+
     const wxArrayClassInfo& dependencies = module->m_dependencies;
 
     // satisfy module dependencies by loading them before the current module
@@ -197,3 +201,25 @@ void wxModule::DoCleanUpModules(const wxModuleList& modules)
     // clear all modules, even the non-initialized ones
     WX_CLEAR_LIST(wxModuleList, m_modules);
 }
+
+bool wxModule::ResolveNamedDependencies()
+{
+    // first resolve required dependencies
+    for ( size_t i = 0; i < m_namedDependencies.size(); ++i )
+    {
+        wxClassInfo *info = wxClassInfo::FindClass(m_namedDependencies[i]);
+
+        if ( !info )
+        {
+            // required dependency not found
+            return false;
+        }
+
+        // add it even if it is not derived from wxModule because
+        // DoInitializeModule() will make sure a module with the same class
+        // info exists and fail if it doesn't
+        m_dependencies.Add(info);
+    }
+
+    return true;
+}