| 1067 | //----------------------------------------------------------------------------- |
| 1068 | |
| 1069 | void ModuleManager::findModuleTypes( const char* pModuleType, const bool loadedOnly, typeConstModuleDefinitionVector& moduleDefinitions ) |
| 1070 | { |
| 1071 | // Fetch module type. |
| 1072 | StringTableEntry moduleType = StringTable->insert( pModuleType ); |
| 1073 | |
| 1074 | // Iterate module Ids. |
| 1075 | for( typeModuleIdDatabaseHash::iterator moduleIdItr = mModuleIdDatabase.begin(); moduleIdItr != mModuleIdDatabase.end(); ++moduleIdItr ) |
| 1076 | { |
| 1077 | // Fetch module definition entry. |
| 1078 | ModuleDefinitionEntry* pModuleDefinitionEntry = moduleIdItr->value; |
| 1079 | |
| 1080 | // Skip if note the module type we're searching for. |
| 1081 | if ( pModuleDefinitionEntry->mModuleType != moduleType ) |
| 1082 | continue; |
| 1083 | |
| 1084 | // Iterate module definitions. |
| 1085 | for ( typeModuleDefinitionVector::iterator moduleDefinitionItr = pModuleDefinitionEntry->begin(); moduleDefinitionItr != pModuleDefinitionEntry->end(); ++moduleDefinitionItr ) |
| 1086 | { |
| 1087 | // Fetch module definition. |
| 1088 | ModuleDefinition* pModuleDefinition = *moduleDefinitionItr; |
| 1089 | |
| 1090 | // Are we searching for loaded modules only? |
| 1091 | if ( loadedOnly ) |
| 1092 | { |
| 1093 | // Yes, so skip if the module is not loaded. |
| 1094 | if ( pModuleDefinition->getLoadCount() == 0 ) |
| 1095 | continue; |
| 1096 | |
| 1097 | // Use module definition. |
| 1098 | moduleDefinitions.push_back( pModuleDefinition ); |
| 1099 | |
| 1100 | // Finish iterating module definitions as only a single module in this entry can be loaded concurrently. |
| 1101 | break; |
| 1102 | } |
| 1103 | |
| 1104 | // use module definition. |
| 1105 | moduleDefinitions.push_back( pModuleDefinition ); |
| 1106 | } |
| 1107 | } |
| 1108 | } |
| 1109 | |
| 1110 | //----------------------------------------------------------------------------- |
| 1111 |
no test coverage detected