MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / build_inverses_

Method build_inverses_

src/ifcparse/IfcParse.cpp:2753–2771  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2751}
2752
2753void IfcParse::IfcFile::build_inverses_(IfcUtil::IfcBaseClass* inst) {
2754 std::function<void(IfcUtil::IfcBaseClass*, int)> fn = [this, inst](IfcUtil::IfcBaseClass* attr, int idx) {
2755 if (attr->declaration().as_entity() != nullptr) {
2756 unsigned entity_attribute_id = attr->id();
2757 const auto* decl = inst->declaration().as_entity();
2758
2759 std::visit([entity_attribute_id, decl, idx, inst](auto& x) {
2760 if constexpr (std::is_same_v<std::decay_t<decltype(x)>, std::monostate>) {
2761 } else if constexpr (std::is_same_v<std::decay_t<decltype(x)>, impl::in_memory_file_storage>) {
2762 x.byref_excl_[{entity_attribute_id, decl->index_in_schema(), idx}].push_back(inst->id());
2763 } else if constexpr (std::is_same_v<std::decay_t<decltype(x)>, impl::rocks_db_file_storage>) {
2764 // @todo
2765 }
2766 }, storage_);
2767 }
2768 };
2769
2770 apply_individual_instance_visitor(inst).apply(fn);
2771}
2772
2773void IfcParse::IfcFile::unbatch() {
2774 for (auto& id : batch_deletion_ids_) {

Callers

nothing calls this directly

Calls 5

push_backMethod · 0.80
visitFunction · 0.50
idMethod · 0.45
applyMethod · 0.45

Tested by

no test coverage detected