diff --git a/src/ifcgeom/AbstractKernel.cpp b/src/ifcgeom/AbstractKernel.cpp index 09f0cda1a9..e4917fe679 100644 --- a/src/ifcgeom/AbstractKernel.cpp +++ b/src/ifcgeom/AbstractKernel.cpp @@ -26,7 +26,7 @@ bool ifcopenshell::geometry::kernels::AbstractKernel::convert(const taxonomy::pt // std::wcout << sss.c_str() << std::endl; try { - return dispatch_conversion<0>::dispatch(this, item, results); + return dispatch_conversion<0>::dispatch(this, item->kind(), item, results); } catch (std::exception& e) { Logger::Error(e, item->instance); return false; diff --git a/src/ifcgeom/AbstractKernel.h b/src/ifcgeom/AbstractKernel.h index 7f4ed08692..7f64b2bc25 100644 --- a/src/ifcgeom/AbstractKernel.h +++ b/src/ifcgeom/AbstractKernel.h @@ -79,19 +79,19 @@ namespace { /* A compile-time for loop over the taxonomy kinds */ template struct dispatch_conversion { - static bool dispatch(ifcopenshell::geometry::kernels::AbstractKernel* kernel, const ifcopenshell::geometry::taxonomy::ptr item, IfcGeom::ConversionResults& results) { - if (N == item->kind()) { + static bool dispatch(ifcopenshell::geometry::kernels::AbstractKernel* kernel, ifcopenshell::geometry::taxonomy::kinds item_kind, const ifcopenshell::geometry::taxonomy::ptr item, IfcGeom::ConversionResults& results) { + if (N == item_kind) { auto concrete_item = ifcopenshell::geometry::taxonomy::template cast>(item); return kernel->convert_impl(concrete_item, results); } else { - return dispatch_conversion::dispatch(kernel, item, results); + return dispatch_conversion::dispatch(kernel, item_kind, item, results); } } }; template <> struct dispatch_conversion { - static bool dispatch(ifcopenshell::geometry::kernels::AbstractKernel*, const ifcopenshell::geometry::taxonomy::ptr item, IfcGeom::ConversionResults&) { + static bool dispatch(ifcopenshell::geometry::kernels::AbstractKernel*, ifcopenshell::geometry::taxonomy::kinds item_kind, const ifcopenshell::geometry::taxonomy::ptr item, IfcGeom::ConversionResults&) { Logger::Error("No conversion for " + std::to_string(item->kind())); return false; }