mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 06:38:40 +00:00
Rename geometry and serializer files
Apply the rename manifest, normalize serializer filenames to the classes they define, and update includes and CMake source lists. Generated with the assistance of an AI coding tool.
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
#include "../ifcgeom/element.h"
|
||||
#include "../ifcgeom/conversion_settings.h"
|
||||
#include "../ifcgeom/abstract_mapping.h"
|
||||
#include "../ifcgeom/function_item_evaluator.h"
|
||||
|
||||
#include "abstract_kernel.h"
|
||||
|
||||
using namespace ifcopenshell::geom;
|
||||
|
||||
const char* ifcopenshell::not_implemented_error::what() const noexcept {
|
||||
return "Not implemented.";
|
||||
}
|
||||
|
||||
const char* ifcopenshell::not_supported_error::what() const noexcept {
|
||||
return "Not supported.";
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert(const taxonomy::ptr item, ifcopenshell::geom::conversion_results& results) {
|
||||
if (settings_.get<settings::CacheShapes>().get()) {
|
||||
auto it = cache_.find(item);
|
||||
if (it != cache_.end()) {
|
||||
results = it->second;
|
||||
logger_.notice("SYS", 25, "Cache hit #" + std::to_string(item->instance.id()) +
|
||||
" -> #" + std::to_string(it->first->instance.id()));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
auto with_exception_handling = [&](auto fn) {
|
||||
try {
|
||||
return fn();
|
||||
} catch (std::exception& e) {
|
||||
logger_.error("GEO", 27, e, item->instance);
|
||||
return false;
|
||||
} catch (...) {
|
||||
// @todo we can't log OCCT exceptions here, can we do some reraising to solve this?
|
||||
return false;
|
||||
}
|
||||
};
|
||||
auto without_exception_handling = [](auto fn) {
|
||||
return fn();
|
||||
};
|
||||
auto process_with_upgrade = [&]() {
|
||||
try {
|
||||
return dispatch_conversion<0>::dispatch(this, item->kind(), item, results);
|
||||
} catch (const not_implemented_error&) {
|
||||
return dispatch_with_upgrade<0>::dispatch(this, item, results);
|
||||
}
|
||||
};
|
||||
|
||||
bool res;
|
||||
if (propagate_exceptions) {
|
||||
res = without_exception_handling(process_with_upgrade);
|
||||
} else {
|
||||
res = with_exception_handling(process_with_upgrade);
|
||||
}
|
||||
|
||||
if (settings_.get<settings::CacheShapes>().get() && res) {
|
||||
cache_.insert({ item, results });
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
const ifcopenshell::geom::settings& ifcopenshell::geom::kernels::abstract_kernel::settings() const
|
||||
{
|
||||
return settings_;
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::collection::ptr collection, ifcopenshell::geom::conversion_results& r) {
|
||||
auto s = r.size();
|
||||
for (auto& c : collection->children) {
|
||||
if (!convert(c, r) && !partial_success_is_success) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (auto i = s; i < r.size(); ++i) {
|
||||
if (collection->matrix) {
|
||||
r[i].prepend(collection->matrix);
|
||||
}
|
||||
if (!r[i].hasStyle() && collection->surface_style) {
|
||||
r[i].setStyle(collection->surface_style);
|
||||
}
|
||||
}
|
||||
return r.size() > s;
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::function_item::ptr item, ifcopenshell::geom::conversion_results& cs) {
|
||||
function_item_evaluator evaluator(settings(),item);
|
||||
auto expl = evaluator.evaluate();
|
||||
expl->instance = item->instance;
|
||||
return convert(expl, cs);
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::functor_item::ptr item, ifcopenshell::geom::conversion_results& cs) {
|
||||
function_item_evaluator evaluator(settings(), item);
|
||||
auto expl = evaluator.evaluate();
|
||||
expl->instance = item->instance;
|
||||
return convert(expl, cs);
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::piecewise_function::ptr item, ifcopenshell::geom::conversion_results& cs) {
|
||||
function_item_evaluator evaluator(settings(), item);
|
||||
auto expl = evaluator.evaluate();
|
||||
expl->instance = item->instance;
|
||||
return convert(expl, cs);
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::gradient_function::ptr item, ifcopenshell::geom::conversion_results& cs) {
|
||||
function_item_evaluator evaluator(settings(), item);
|
||||
auto expl = evaluator.evaluate();
|
||||
expl->instance = item->instance;
|
||||
return convert(expl, cs);
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::cant_function::ptr item, ifcopenshell::geom::conversion_results& cs) {
|
||||
function_item_evaluator evaluator(settings(), item);
|
||||
auto expl = evaluator.evaluate();
|
||||
expl->instance = item->instance;
|
||||
return convert(expl, cs);
|
||||
}
|
||||
|
||||
bool ifcopenshell::geom::kernels::abstract_kernel::convert_impl(const taxonomy::offset_function::ptr item, ifcopenshell::geom::conversion_results& cs) {
|
||||
function_item_evaluator evaluator(settings(), item);
|
||||
auto expl = evaluator.evaluate();
|
||||
expl->instance = item->instance;
|
||||
return convert(expl, cs);
|
||||
}
|
||||
Reference in New Issue
Block a user