diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp index d1473d7a7f..51ce532fdd 100644 --- a/src/ifcconvert/IfcConvert.cpp +++ b/src/ifcconvert/IfcConvert.cpp @@ -906,7 +906,7 @@ int main(int argc, char** argv) { return EXIT_FAILURE; } - serializer->setFile(ifc_file); + serializer->setFile(*ifc_file); if (context_iterator && geometry_settings.get().get()) { serializer->setUnitNameAndMagnitude(context_iterator->unit_name(), static_cast(context_iterator->unit_magnitude())); diff --git a/src/ifcgeom/Serializer.h b/src/ifcgeom/Serializer.h index edeaf4d63b..03c2b6c362 100644 --- a/src/ifcgeom/Serializer.h +++ b/src/ifcgeom/Serializer.h @@ -35,7 +35,7 @@ public: virtual bool is_streaming() const { return false; } virtual void writeHeader() = 0; virtual void finalize() = 0; - virtual void setFile(ifcopenshell::file*) = 0; + virtual void setFile(ifcopenshell::file&) = 0; }; #endif diff --git a/src/ifcwrap/IfcGeomWrapper.i b/src/ifcwrap/IfcGeomWrapper.i index e8f27fc39a..e85c6366bd 100644 --- a/src/ifcwrap/IfcGeomWrapper.i +++ b/src/ifcwrap/IfcGeomWrapper.i @@ -350,7 +350,7 @@ public: serializer_->finalize(); } - void setFile(ifcopenshell::file* file) override { + void setFile(ifcopenshell::file& file) override { serializer_->setFile(file); } @@ -405,7 +405,7 @@ private: $self->finalize(); } - void setFile(ifcopenshell::file* file) { + void setFile(ifcopenshell::file& file) { $self->setFile(file); } } @@ -1256,7 +1256,7 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type %} %inline %{ - IfcGeom::ConversionResultShape* nary_union(PyObject* sequence) { + IfcGeom::ConversionResultShape* nary_union(PyObject* sequence) { std::vector*> nefs; for(Py_ssize_t i = 0; i < PySequence_Size(sequence); ++i) { PyObject* element = PySequence_GetItem(sequence, i); diff --git a/src/serializers/ColladaSerializer.h b/src/serializers/ColladaSerializer.h index 71f6d3b65c..45d1238f0c 100644 --- a/src/serializers/ColladaSerializer.h +++ b/src/serializers/ColladaSerializer.h @@ -238,7 +238,7 @@ public: unit_name = name; unit_magnitude = magnitude; } - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} std::string object_id(const IfcGeom::Element* o) /*override*/; diff --git a/src/serializers/GltfSerializer.cpp b/src/serializers/GltfSerializer.cpp index 73b81fb0e6..557c8c1707 100644 --- a/src/serializers/GltfSerializer.cpp +++ b/src/serializers/GltfSerializer.cpp @@ -530,7 +530,7 @@ namespace { } } -void GltfSerializer::setFile(ifcopenshell::file* f) { +void GltfSerializer::setFile(ifcopenshell::file& f) { if (!settings_.get().get()) { return; } @@ -541,7 +541,7 @@ void GltfSerializer::setFile(ifcopenshell::file* f) { std::vector coordops; try { - coordops = f->instances_by_type("IfcCoordinateOperation"); + coordops = f.instances_by_type("IfcCoordinateOperation"); } catch (ifcopenshell::exception&) { // Ignored. Schema likely doesn't support IfcCoordinateOperation. } @@ -578,7 +578,7 @@ void GltfSerializer::setFile(ifcopenshell::file* f) { } if (!crs_epsg) { - auto sites = f->instances_by_type("IfcSite"); + auto sites = f.instances_by_type("IfcSite"); if (sites.size() == 1) { auto lat_attr = sites.front().as().get("RefLatitude"); @@ -613,7 +613,7 @@ void GltfSerializer::setFile(ifcopenshell::file* f) { } } - auto contexts = f->instances_by_type_excl_subtypes("IfcGeometricRepresentationContext"); + auto contexts = f.instances_by_type_excl_subtypes("IfcGeometricRepresentationContext"); if (!contexts.empty()) { auto context = contexts.front().as(); diff --git a/src/serializers/GltfSerializer.h b/src/serializers/GltfSerializer.h index c28fbbb1dd..3053961ea0 100644 --- a/src/serializers/GltfSerializer.h +++ b/src/serializers/GltfSerializer.h @@ -52,7 +52,7 @@ public: void finalize(); bool isTesselated() const { return true; } void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {} - void setFile(ifcopenshell::file*); + void setFile(ifcopenshell::file&); }; #endif diff --git a/src/serializers/JsonSerializer.h b/src/serializers/JsonSerializer.h index 94f8a80a17..64714a6378 100644 --- a/src/serializers/JsonSerializer.h +++ b/src/serializers/JsonSerializer.h @@ -51,7 +51,7 @@ class JsonSerializer : public Serializer { } implementation_->finalize(); } - void setFile(ifcopenshell::file*) { throw ifcopenshell::exception("Should be supplied on construction"); } + void setFile(ifcopenshell::file&) { throw ifcopenshell::exception("Should be supplied on construction"); } }; #endif diff --git a/src/serializers/OpenCascadeBasedSerializer.h b/src/serializers/OpenCascadeBasedSerializer.h index e71ff1f1c2..572b39d316 100644 --- a/src/serializers/OpenCascadeBasedSerializer.h +++ b/src/serializers/OpenCascadeBasedSerializer.h @@ -47,7 +47,7 @@ public: void write(const IfcGeom::TriangulationElement* /*o*/) {} void write(const IfcGeom::BRepElement* o); bool isTesselated() const { return false; } - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} }; #endif diff --git a/src/serializers/RocksDbSerializer.h b/src/serializers/RocksDbSerializer.h index 0a79c820b5..c57c8d08a2 100644 --- a/src/serializers/RocksDbSerializer.h +++ b/src/serializers/RocksDbSerializer.h @@ -25,7 +25,7 @@ public: void writeHeader() override {} void finalize() override; - void setFile(ifcopenshell::file*) override { throw ifcopenshell::exception("Streaming serializer uses input filename supplied on construction"); } + void setFile(ifcopenshell::file&) override { throw ifcopenshell::exception("Streaming serializer uses input filename supplied on construction"); } }; #endif diff --git a/src/serializers/SvgSerializer.cpp b/src/serializers/SvgSerializer.cpp index 92ea24665e..cf474869e8 100644 --- a/src/serializers/SvgSerializer.cpp +++ b/src/serializers/SvgSerializer.cpp @@ -2463,10 +2463,10 @@ std::string SvgSerializer::nameElement(express::Base elem_) { }); } -void SvgSerializer::setFile(ifcopenshell::file* f) { +void SvgSerializer::setFile(ifcopenshell::file& f) { using namespace ifcopenshell::geometry::settings; - file = f; + file = &f; auto apply_section_heights_from_storeys = [&]() { if (settings().get().get()) { if (settings().get().has()) { @@ -2477,15 +2477,15 @@ void SvgSerializer::setFile(ifcopenshell::file* f) { } }; - auto storeys = f->instances_by_type("IfcBuildingStorey"); + auto storeys = f.instances_by_type("IfcBuildingStorey"); if (storeys.empty()) { auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(file, geometry_settings_, logger()); std::vector to_derive_from; - to_derive_from.push_back(f->schema()->declaration_by_name("IfcBuilding")); - to_derive_from.push_back(f->schema()->declaration_by_name("IfcSite")); + to_derive_from.push_back(f.schema()->declaration_by_name("IfcBuilding")); + to_derive_from.push_back(f.schema()->declaration_by_name("IfcSite")); for (auto it = to_derive_from.begin(); it != to_derive_from.end(); ++it) { - auto insts = f->instances_by_type(*it); + auto insts = f.instances_by_type(*it); for (auto& inst : insts) { auto product = inst.as(); if (!product.get("ObjectPlacement").isNull()) { diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h index 349a3c343c..9147485c41 100644 --- a/src/serializers/SvgSerializer.h +++ b/src/serializers/SvgSerializer.h @@ -650,7 +650,7 @@ public: bool isTesselated() const { return false; } void finalize(); void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {} - void setFile(ifcopenshell::file* f); + void setFile(ifcopenshell::file& f); void setBoundingRectangle(double width, double height); void setSectionHeight(double h, express::Base storey = express::Base()); void setSectionHeightsFromStoreys(double offset=1.2); diff --git a/src/serializers/TtlWktSerializer.h b/src/serializers/TtlWktSerializer.h index 69e17cad7c..4bc6f76f12 100644 --- a/src/serializers/TtlWktSerializer.h +++ b/src/serializers/TtlWktSerializer.h @@ -41,7 +41,7 @@ public: void finalize() {} bool isTesselated() const; void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {} - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} std::string ttl_object_id(const IfcGeom::Element* o, const char* const postfix = nullptr); }; diff --git a/src/serializers/USDSerializer.h b/src/serializers/USDSerializer.h index d7b450ffc2..d6aa6a8f2b 100644 --- a/src/serializers/USDSerializer.h +++ b/src/serializers/USDSerializer.h @@ -95,7 +95,7 @@ public: void finalize(); bool isTesselated() const { return true; } void setUnitNameAndMagnitude(const std::string&, float) {} - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} std::string object_id_unique(const IfcGeom::Element* o); }; diff --git a/src/serializers/WavefrontObjSerializer.h b/src/serializers/WavefrontObjSerializer.h index 64f1131d8f..a35de6a713 100644 --- a/src/serializers/WavefrontObjSerializer.h +++ b/src/serializers/WavefrontObjSerializer.h @@ -45,7 +45,7 @@ public: void finalize() {} bool isTesselated() const { return true; } void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {} - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} }; #endif diff --git a/src/serializers/XmlSerializer.h b/src/serializers/XmlSerializer.h index c91dc9562d..b47f0449c9 100644 --- a/src/serializers/XmlSerializer.h +++ b/src/serializers/XmlSerializer.h @@ -44,7 +44,7 @@ public: } implementation_->finalize(); } - void setFile(ifcopenshell::file*) { throw ifcopenshell::exception("Should be supplied on construction"); } + void setFile(ifcopenshell::file&) { throw ifcopenshell::exception("Should be supplied on construction"); } }; #endif diff --git a/src/serializers/schema_dependent/JsonSerializer.h b/src/serializers/schema_dependent/JsonSerializer.h index 26ad037bcc..8603de2317 100644 --- a/src/serializers/schema_dependent/JsonSerializer.h +++ b/src/serializers/schema_dependent/JsonSerializer.h @@ -50,7 +50,7 @@ class POSTFIX_SCHEMA(JsonSerializer) : public JsonSerializer { } void finalize(); - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} }; #endif diff --git a/src/serializers/schema_dependent/XmlSerializer.h b/src/serializers/schema_dependent/XmlSerializer.h index 22c582f12e..619488d8b6 100644 --- a/src/serializers/schema_dependent/XmlSerializer.h +++ b/src/serializers/schema_dependent/XmlSerializer.h @@ -48,7 +48,7 @@ public: } void finalize(); - void setFile(ifcopenshell::file*) {} + void setFile(ifcopenshell::file&) {} }; #endif