| 442 | |
| 443 | |
| 444 | Model* getModelFallback(const std::string& pluginSlug, const std::string& modelSlug) { |
| 445 | if (pluginSlug.empty() || modelSlug.empty()) |
| 446 | return NULL; |
| 447 | |
| 448 | // Attempt exact plugin and model |
| 449 | Model* m = getModel(pluginSlug, modelSlug); |
| 450 | if (m) |
| 451 | return m; |
| 452 | |
| 453 | // Attempt fallback module |
| 454 | auto it = moduleSlugFallbacks.find(std::make_tuple(pluginSlug, modelSlug)); |
| 455 | if (it != moduleSlugFallbacks.end()) { |
| 456 | Model* m = getModel(std::get<0>(it->second), std::get<1>(it->second)); |
| 457 | if (m) |
| 458 | return m; |
| 459 | } |
| 460 | |
| 461 | // Attempt fallback plugin |
| 462 | auto it2 = pluginSlugFallbacks.find(pluginSlug); |
| 463 | if (it2 != pluginSlugFallbacks.end()) { |
| 464 | Model* m = getModel(it2->second, modelSlug); |
| 465 | if (m) |
| 466 | return m; |
| 467 | } |
| 468 | |
| 469 | return NULL; |
| 470 | } |
| 471 | |
| 472 | |
| 473 | Model* modelFromJson(json_t* moduleJ) { |
no test coverage detected