add wxModule::AddDependency(name) overload (patch 1790451)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50012 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-11-17 00:12:01 +00:00
parent 08f1c27c39
commit d04a9fdfe2
3 changed files with 73 additions and 4 deletions

View 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;
}