Continue work on plug-in and tests

This commit is contained in:
Thomas Krijnen
2026-05-06 21:17:25 +02:00
parent 4670715ef3
commit 98ff457fd6
61 changed files with 16000 additions and 16377 deletions
@@ -39,9 +39,9 @@ class spf_header;
struct %(schema_name)s {
IFC_PARSE_API static const ifcopenshell::schema_definition& get_schema();
IFC_SCHEMA_API static const ifcopenshell::schema_definition& get_schema();
IFC_PARSE_API static void clear_schema();
IFC_SCHEMA_API static void clear_schema();
static const char* const Identifier;
@@ -111,7 +111,7 @@ derived_field_statement = " {std::set<int> idxs; %(statements)sderived_map[Ty
derived_field_statement_attrs = "idxs.insert(%d); "
simpletype = """%(documentation)s
class IFC_PARSE_API %(name)s : public %(superclass)s {
class IFC_SCHEMA_API %(name)s : public %(superclass)s {
public:
using %(superclass)s::%(superclass_2)s;
@@ -139,7 +139,7 @@ simpletype_impl_cast_templated = "std::vector<express::Base> es = get_attribute_
simpletype_impl_declaration = "return *((ifcopenshell::type_declaration*)%(schema_name_upper)s_types[%(index_in_schema)d]);"
select = """%(documentation)s
class IFC_PARSE_API %(name)s : public express::Select {
class IFC_SCHEMA_API %(name)s : public express::Select {
public:
using express::Select::Select;
@@ -158,7 +158,7 @@ select_cast_function = """ %(name)s(const %(item_name)s& c) : express::Select
"""
enumeration = """%(documentation)s
class IFC_PARSE_API %(name)s : public express::DeclaredType {
class IFC_SCHEMA_API %(name)s : public express::DeclaredType {
public:
using express::DeclaredType::DeclaredType;
@@ -174,7 +174,7 @@ public:
"""
entity = """%(documentation)s
class IFC_PARSE_API %(name)s : public %(superclass)s {
class IFC_SCHEMA_API %(name)s : public %(superclass)s {
public:
using %(superclass)s::%(superclass_2)s;
+1 -1
View File
@@ -718,7 +718,7 @@ class file_mixin:
"""
if self.transaction:
max_id = self.getMaxId()
max_id = self.get_max_id()
result = self._add(inst, -1 if _id is None else _id)
@@ -1675,14 +1675,14 @@ def remove_deep2(
subgraph = list(ifc_file.traverse(element, breadth_first=True))
subgraph.extend(also_consider)
subgraph_set = set(subgraph)
subelement_queue = deque([element])
subelement_queue = [element]
# Cache already processed entities to avoid traversing them multiple time.
# E.g. lots of IFCINDEXEDPOLYCURVES may reference the same IFCCARTESIANPOINTLIST2D.
processed_ids: set[int] = set()
while subelement_queue:
subelement = subelement_queue.popleft()
subelement = subelement_queue.pop(0)
subelement_id = subelement.id()
if (
subelement_id
@@ -16,10 +16,10 @@
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
import pytest
import test.bootstrap
class TestGetInfo2(test.bootstrap.IFC4):
def test_instance_attribute(self):
brep = self.file.create_entity("IfcFacetedBrep")
@@ -14,6 +14,7 @@ import ifcopenshell.guid
import ifcopenshell.template
@pytest.mark.skip(reason="Current file retention is not automatic anymore if a single instance is alive")
@pytest.mark.parametrize(
"args",
itertools.product((0, 1), (0, 1), (0, 1), (0, 1, 2)),