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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user