static
| 371 | |
| 372 | // static |
| 373 | void ModuleManager::Initialize() |
| 374 | { |
| 375 | FilePaths files; |
| 376 | FindModules(files); |
| 377 | |
| 378 | FilePaths decided; |
| 379 | DelayedErrors errors; |
| 380 | size_t numDecided = 0; |
| 381 | |
| 382 | // Multiple passes give modules multiple chances to load in case they |
| 383 | // depend on some other module not yet loaded |
| 384 | do { |
| 385 | numDecided = decided.size(); |
| 386 | errors.clear(); |
| 387 | TryLoadModules(files, decided, errors); |
| 388 | } |
| 389 | while ( errors.size() && numDecided < decided.size() ); |
| 390 | |
| 391 | // Only now show accumulated errors of modules that failed to load |
| 392 | for ( const auto &pair : errors ) { |
| 393 | auto &pModule = pair.first; |
| 394 | pModule->ShowLoadFailureError(pair.second); |
| 395 | ModuleSettings::SetModuleStatus( pModule->GetName(), kModuleFailed ); |
| 396 | } |
| 397 | } |
| 398 | |
| 399 | // static |
| 400 | int ModuleManager::Dispatch(ModuleDispatchTypes type) |
no test coverage detected