Example #1
0
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));
}