void CookerRegistry::register_cooker(UniquePtr<Cooker> pCooker) { for (const ChefString & rawExt : pCooker->rawExts()) { PANIC_IF(sRawExtToCooker.find(rawExt) != sRawExtToCooker.end(), "Multiple cookers registered for same raw extension: %s", rawExt); sRawExtToCooker[rawExt] = pCooker.get(); } for (const ChefString & cookedExt : pCooker->cookedExtsExclusive()) { PANIC_IF(sCookedExtToCooker.find(cookedExt) != sCookedExtToCooker.end(), "Multiple cookers registered for same cooked extension: %s", cookedExt); sCookedExtToCooker[cookedExt] = pCooker.get(); } sCookers.emplace_back(std::move(pCooker)); }