From d45174066feddbf13a349bd04cc79e35ceedec64 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 22 Jul 2026 16:04:45 +0500 Subject: [PATCH] downstream: logger: use `Logger*` instead of `Logger&` to propagate signature using swig --- src/ifcgeom/GeometrySerializer.h | 7 ++-- .../ifcopenshell/ifcopenshell_wrapper.pyi | 20 ++++----- src/ifcparse/logger.h | 7 ++++ src/ifcwrap/IfcGeomWrapper.i | 42 +++++++++---------- src/ifcwrap/IfcParseWrapper.i | 4 +- src/serializers/ColladaSerializer.h | 2 +- src/serializers/GltfSerializer.cpp | 2 +- src/serializers/GltfSerializer.h | 2 +- src/serializers/IgesSerializer.h | 2 +- src/serializers/OpenCascadeBasedSerializer.h | 2 +- src/serializers/RocksDbSerializer.cpp | 2 +- src/serializers/RocksDbSerializer.h | 2 +- src/serializers/StepSerializer.h | 2 +- src/serializers/SvgSerializer.h | 2 +- src/serializers/TtlWktSerializer.cpp | 2 +- src/serializers/TtlWktSerializer.h | 2 +- src/serializers/USDSerializer.cpp | 2 +- src/serializers/USDSerializer.h | 2 +- src/serializers/WavefrontObjSerializer.cpp | 2 +- src/serializers/WavefrontObjSerializer.h | 2 +- 20 files changed, 56 insertions(+), 54 deletions(-) diff --git a/src/ifcgeom/GeometrySerializer.h b/src/ifcgeom/GeometrySerializer.h index 950e7f41e9..0d880f5a5c 100644 --- a/src/ifcgeom/GeometrySerializer.h +++ b/src/ifcgeom/GeometrySerializer.h @@ -22,6 +22,7 @@ #include "../ifcgeom/Serializer.h" #include "../ifcgeom/IfcGeomElement.h" +#include "../ifcparse/logger.h" #include namespace ifcopenshell { @@ -346,8 +347,8 @@ class IFC_GEOM_API GeometrySerializer : public Serializer { public: enum read_type { READ_BREP, READ_TRIANGULATION }; - GeometrySerializer(const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()) - : Serializer(logger) + GeometrySerializer(const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr) + : Serializer(logger_or_root(logger)) , geometry_settings_(geometry_settings) , settings_(settings) {} @@ -381,7 +382,7 @@ protected: class IFC_GEOM_API WriteOnlyGeometrySerializer : public GeometrySerializer { public: - WriteOnlyGeometrySerializer(const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()) : GeometrySerializer(geometry_settings, settings, logger) {} + WriteOnlyGeometrySerializer(const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr) : GeometrySerializer(geometry_settings, settings, logger) {} virtual IfcGeom::Element* read(ifcopenshell::file&, const std::string&, const std::string&, read_type = READ_BREP) { throw std::runtime_error("Not supported"); diff --git a/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi b/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi index 89c45f6860..0bbea08b65 100644 --- a/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi +++ b/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi @@ -1568,23 +1568,17 @@ class type_declaration(declaration): class uninitialized_tag: ... -def arrange_polygons(settings, polygons): ... +def arrange_polygons(settings, polygons, logger=None): ... def clear_plugin_search_paths() -> None: ... def clear_schemas(): ... -def construct_iterator(geometry_library, settings, file, num_threads): ... -def construct_iterator_with_include_exclude(geometry_library, settings, file, elems, include, num_threads): ... -def construct_iterator_with_include_exclude_globalid(geometry_library, settings, file, elems, include, num_threads): ... -def construct_iterator_with_include_exclude_id(geometry_library, settings, file, elems, include, num_threads): ... +def construct_iterator(geometry_library, settings, file, num_threads, logger=None): ... +def construct_iterator_with_include_exclude(geometry_library, settings, file, elems, include, num_threads, logger=None): ... +def construct_iterator_with_include_exclude_globalid(geometry_library, settings, file, elems, include, num_threads, logger=None): ... +def construct_iterator_with_include_exclude_id(geometry_library, settings, file, elems, include, num_threads, logger=None): ... def convert_loop_to_function_item(loop): ... def create_box(*args): ... def create_epeck(*args): ... -def create_geometry_serializer( - extension: str, - output_filename: str, - output_temp_filename: str, - geometry_settings: Settings, - serializer_settings: SerializerSettings, -) -> GeometrySerializer: ... +def create_geometry_serializer(*args) -> GeometrySerializer: ... def create_shape(*args): ... def flatten(deep): ... def get_feature(x): ... @@ -1599,7 +1593,7 @@ def line_segments_to_polygons(s, eps, segments): ... def map_shape(settings, instance): ... def nary_union(sequence): ... def new_IfcBaseClass(schema_identifier: str, name: str) -> entity_instance: ... -def open(fn: str, readonly: bool = False) -> file: ... +def open(fn: str, readonly: bool = False, logger=None) -> file: ... def parse_ifcxml(filename): ... def polygons_to_svg(*args): ... def read(data): ... diff --git a/src/ifcparse/logger.h b/src/ifcparse/logger.h index 9f41b00574..b356f57c0e 100644 --- a/src/ifcparse/logger.h +++ b/src/ifcparse/logger.h @@ -147,6 +147,13 @@ class IFC_PARSE_API logger { const std::vector& log_messages() const { return log_messages_; } }; +// SWIG couldn't represent `logger::root()` default value using Python, +// so when translating signature it represents it just as `fn(*args)`, losing information about args. +// Using `logger* = nullptr` instead of `logger& = logger::root()` helps, +// since `nullptr` is convertable Python's `None`. +// `logger_or_root` is just covering the boilerplate for this pattern. +inline logger& logger_or_root(logger* logger) { return logger ? *logger : ::logger::root(); } + #define PERF(x) \ \ ::logger::root().message(::logger::LOG_PERF, x); \ diff --git a/src/ifcwrap/IfcGeomWrapper.i b/src/ifcwrap/IfcGeomWrapper.i index a4bb0b10a7..5945a3bd7a 100644 --- a/src/ifcwrap/IfcGeomWrapper.i +++ b/src/ifcwrap/IfcGeomWrapper.i @@ -719,35 +719,35 @@ struct ShapeRTTI : public boost::static_visitor ); } - IfcGeom::Iterator* construct_iterator(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, int num_threads) { - return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, num_threads); - } - // I couldn't get the vector typemap to be applied when %extending Iterator constructor. // anyway it does not matter as SWIG generates C code without actual constructors - IfcGeom::Iterator* construct_iterator(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, int num_threads, logger& logger) { - return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, num_threads, logger); - } - - IfcGeom::Iterator* construct_iterator_with_include_exclude(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, std::vector elems, bool include, int num_threads, logger& logger = ::logger::root()) { - std::set elems_set(elems.begin(), elems.end()); - IfcGeom::entity_filter ef{ include, false, elems_set }; - return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, {ef}, num_threads, logger); + IfcGeom::Iterator* construct_iterator(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, int num_threads, logger* logger = nullptr) { + ::logger& logger_ = logger_or_root(logger); + return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, num_threads, logger_); } - IfcGeom::Iterator* construct_iterator_with_include_exclude_globalid(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, std::vector elems, bool include, int num_threads, logger& logger = ::logger::root()) { + IfcGeom::Iterator* construct_iterator_with_include_exclude(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, std::vector elems, bool include, int num_threads, logger* logger = nullptr) { + ::logger& logger_ = logger_or_root(logger); + std::set elems_set(elems.begin(), elems.end()); + IfcGeom::entity_filter ef{ include, false, elems_set }; + return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, {ef}, num_threads, logger_); + } + + IfcGeom::Iterator* construct_iterator_with_include_exclude_globalid(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, std::vector elems, bool include, int num_threads, logger* logger = nullptr) { + ::logger& logger_ = logger_or_root(logger); std::set elems_set(elems.begin(), elems.end()); IfcGeom::attribute_filter af; af.attribute_name = "GlobalId"; af.populate(elems_set); af.include = include; - return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, {af}, num_threads, logger); + return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, {af}, num_threads, logger_); } - IfcGeom::Iterator* construct_iterator_with_include_exclude_id(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, std::vector elems, bool include, int num_threads, logger& logger = ::logger::root()) { + IfcGeom::Iterator* construct_iterator_with_include_exclude_id(const std::string& geometry_library, ifcopenshell::geometry::Settings settings, ifcopenshell::file* file, std::vector elems, bool include, int num_threads, logger* logger = nullptr) { + ::logger& logger_ = logger_or_root(logger); std::set elems_set(elems.begin(), elems.end()); IfcGeom::instance_id_filter af(include, false, elems_set); - return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, {af}, num_threads, logger); + return new IfcGeom::Iterator(ifcopenshell::geometry::kernels::construct(file, geometry_library, settings), settings, file, {af}, num_threads, logger_); } %} @@ -1083,12 +1083,12 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type %} %inline %{ - static std::variant create_shape(ifcopenshell::geometry::Settings& settings, const express::Base& instance, const express::Base& representation, const char* const geometry_library="opencascade", logger& logger = ::logger::root()) { - return helper_fn_create_shape(logger, geometry_library, settings, instance, representation); + static std::variant create_shape(ifcopenshell::geometry::Settings& settings, const express::Base& instance, const express::Base& representation, const char* const geometry_library="opencascade", logger* logger = nullptr) { + return helper_fn_create_shape(logger_or_root(logger), geometry_library, settings, instance, representation); } // Manual definition of overload without representation argument - static std::variant create_shape(ifcopenshell::geometry::Settings& settings, const express::Base& instance, const char* const geometry_library="opencascade", logger& logger = ::logger::root()) { + static std::variant create_shape(ifcopenshell::geometry::Settings& settings, const express::Base& instance, const char* const geometry_library="opencascade", logger* logger = nullptr) { return create_shape(settings, instance, express::Base(), geometry_library, logger); } %} @@ -1347,9 +1347,9 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type } } - std::vector arrange_polygons(svgfill::arrange_polygon_settings settings, const std::vector& polygons, logger& logger = ::logger::root()) { + std::vector arrange_polygons(svgfill::arrange_polygon_settings settings, const std::vector& polygons, logger* logger = nullptr) { std::vector r; - if (svgfill::arrange_polygons(settings, polygons, r, logger)) { + if (svgfill::arrange_polygons(settings, polygons, r, logger_or_root(logger))) { return r; } else { throw std::runtime_error("Failed to arrange polygons"); diff --git a/src/ifcwrap/IfcParseWrapper.i b/src/ifcwrap/IfcParseWrapper.i index dbe3258562..c915bf6ca0 100644 --- a/src/ifcwrap/IfcParseWrapper.i +++ b/src/ifcwrap/IfcParseWrapper.i @@ -1017,10 +1017,10 @@ from .entity_instance import entity_instance_mixin as _entity_instance_mixin_bas %newobject stream_from_string; %inline %{ - ifcopenshell::file* open(const std::string& fn, bool readonly=false, logger& logger=::logger::root()) { + ifcopenshell::file* open(const std::string& fn, bool readonly=false, logger* logger=nullptr) { ifcopenshell::file* f; Py_BEGIN_ALLOW_THREADS; - f = new ifcopenshell::file(fn, ifcopenshell::FT_AUTODETECT, readonly, logger); + f = new ifcopenshell::file(fn, ifcopenshell::FT_AUTODETECT, readonly, logger_or_root(logger)); Py_END_ALLOW_THREADS; return f; } diff --git a/src/serializers/ColladaSerializer.h b/src/serializers/ColladaSerializer.h index 44c391b4f7..71f6d3b65c 100644 --- a/src/serializers/ColladaSerializer.h +++ b/src/serializers/ColladaSerializer.h @@ -219,7 +219,7 @@ private: std::string unit_name; float unit_magnitude; public: - ColladaSerializer(const std::string& dae_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()) + ColladaSerializer(const std::string& dae_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr) : WriteOnlyGeometrySerializer(geometry_settings, settings, logger) , exporter("IfcOpenShell", dae_filename, this, settings.get().get() >= 15) { diff --git a/src/serializers/GltfSerializer.cpp b/src/serializers/GltfSerializer.cpp index 196ee4ba5c..73b81fb0e6 100644 --- a/src/serializers/GltfSerializer.cpp +++ b/src/serializers/GltfSerializer.cpp @@ -53,7 +53,7 @@ static const uint32_t PRIM_TRIANGLE_FAN = 6; static const uint32_t ELEMENT_ARRAY_BUFFER = 34963; static const uint32_t ARRAY_BUFFER = 34962; -GltfSerializer::GltfSerializer(const std::string& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger) +GltfSerializer::GltfSerializer(const std::string& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger) : WriteOnlyGeometrySerializer(geometry_settings, settings, logger) , filename_(filename) , tmp_filename1_(filename + ".indices.tmp") diff --git a/src/serializers/GltfSerializer.h b/src/serializers/GltfSerializer.h index a6579b80ce..c28fbbb1dd 100644 --- a/src/serializers/GltfSerializer.h +++ b/src/serializers/GltfSerializer.h @@ -43,7 +43,7 @@ private: int writeMaterial(const ifcopenshell::geometry::taxonomy::style::ptr style); public: - GltfSerializer(const std::string& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()); + GltfSerializer(const std::string& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr); virtual ~GltfSerializer(); bool ready(); void writeHeader(); diff --git a/src/serializers/IgesSerializer.h b/src/serializers/IgesSerializer.h index d8b4700641..71205952a9 100644 --- a/src/serializers/IgesSerializer.h +++ b/src/serializers/IgesSerializer.h @@ -40,7 +40,7 @@ private: public: /// @note IGESControl_Controller::Init() must be called prior to instantiating IgesSerializer. /// See http://tracker.dev.opencascade.org/view.php?id=23679 for more information. - IgesSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()) + IgesSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr) : OpenCascadeBasedSerializer(out_filename, geometry_settings, settings, logger) {} virtual ~IgesSerializer() {} diff --git a/src/serializers/OpenCascadeBasedSerializer.h b/src/serializers/OpenCascadeBasedSerializer.h index 6f6cdfc568..e71ff1f1c2 100644 --- a/src/serializers/OpenCascadeBasedSerializer.h +++ b/src/serializers/OpenCascadeBasedSerializer.h @@ -36,7 +36,7 @@ protected: const std::string out_filename; const char* getSymbolForUnitMagnitude(float mag); public: - explicit OpenCascadeBasedSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()) + explicit OpenCascadeBasedSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr) : WriteOnlyGeometrySerializer(geometry_settings, settings, logger) , out_filename(out_filename) {} diff --git a/src/serializers/RocksDbSerializer.cpp b/src/serializers/RocksDbSerializer.cpp index d523dcc18a..40ab150d5e 100644 --- a/src/serializers/RocksDbSerializer.cpp +++ b/src/serializers/RocksDbSerializer.cpp @@ -9,7 +9,7 @@ #include "../ifcparse/logger.h" -RocksDbSerializer::RocksDbSerializer(const std::string& input_filename, const std::string& rocksdb_filename, const std::vector& skip_supertypes, ::logger& logger) +RocksDbSerializer::RocksDbSerializer(const std::string& input_filename, const std::string& rocksdb_filename, const std::vector& skip_supertypes, ::logger* logger) : input_filename_(input_filename) , rocksdb_filename_(rocksdb_filename) , skip_supertypes_(skip_supertypes) diff --git a/src/serializers/RocksDbSerializer.h b/src/serializers/RocksDbSerializer.h index 6edbbd6d9f..0a79c820b5 100644 --- a/src/serializers/RocksDbSerializer.h +++ b/src/serializers/RocksDbSerializer.h @@ -16,7 +16,7 @@ private: void write_streaming_(); public: - RocksDbSerializer(const std::string& input_filename, const std::string& rocksdb_filename, const std::vector& skip_supertypes = {}, ::logger& logger = ::logger::root()); + RocksDbSerializer(const std::string& input_filename, const std::string& rocksdb_filename, const std::vector& skip_supertypes = {}, ::logger* logger = nullptr); virtual ~RocksDbSerializer() {} diff --git a/src/serializers/StepSerializer.h b/src/serializers/StepSerializer.h index 058d79d0a0..d01a47c1f6 100644 --- a/src/serializers/StepSerializer.h +++ b/src/serializers/StepSerializer.h @@ -34,7 +34,7 @@ class StepSerializer : public OpenCascadeBasedSerializer private: STEPControl_Writer writer; public: - explicit StepSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& serializer_settings, ::logger& logger = ::logger::root()) + explicit StepSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& serializer_settings, ::logger* logger = nullptr) : OpenCascadeBasedSerializer(out_filename, geometry_settings, serializer_settings, logger) {} virtual ~StepSerializer() {} diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h index be8c6f2889..349a3c343c 100644 --- a/src/serializers/SvgSerializer.h +++ b/src/serializers/SvgSerializer.h @@ -597,7 +597,7 @@ protected: subtract_before_project subtraction_settings_; public: - SvgSerializer(const stream_or_filename& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()) + SvgSerializer(const stream_or_filename& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr) : WriteOnlyGeometrySerializer(geometry_settings, settings, logger) , svg_file(out_filename) , xmin(+std::numeric_limits::infinity()) diff --git a/src/serializers/TtlWktSerializer.cpp b/src/serializers/TtlWktSerializer.cpp index 2341e2f7bd..f5b59afee1 100644 --- a/src/serializers/TtlWktSerializer.cpp +++ b/src/serializers/TtlWktSerializer.cpp @@ -233,7 +233,7 @@ namespace { } } -TtlWktSerializer::TtlWktSerializer(const stream_or_filename& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger) +TtlWktSerializer::TtlWktSerializer(const stream_or_filename& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger) : WriteOnlyGeometrySerializer(geometry_settings, settings, logger) , filename_(filename) { diff --git a/src/serializers/TtlWktSerializer.h b/src/serializers/TtlWktSerializer.h index 83a358a906..69e17cad7c 100644 --- a/src/serializers/TtlWktSerializer.h +++ b/src/serializers/TtlWktSerializer.h @@ -32,7 +32,7 @@ class SERIALIZERS_API TtlWktSerializer : public WriteOnlyGeometrySerializer { private: stream_or_filename filename_; public: - TtlWktSerializer(const stream_or_filename& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()); + TtlWktSerializer(const stream_or_filename& filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr); virtual ~TtlWktSerializer() {} bool ready(); void writeHeader(); diff --git a/src/serializers/USDSerializer.cpp b/src/serializers/USDSerializer.cpp index f45b1f4873..c9ce434037 100644 --- a/src/serializers/USDSerializer.cpp +++ b/src/serializers/USDSerializer.cpp @@ -36,7 +36,7 @@ #include -USDSerializer::USDSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger): +USDSerializer::USDSerializer(const std::string& out_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger): WriteOnlyGeometrySerializer(geometry_settings, settings, logger), filename_(out_filename) { diff --git a/src/serializers/USDSerializer.h b/src/serializers/USDSerializer.h index 12a91ffc3d..d7b450ffc2 100644 --- a/src/serializers/USDSerializer.h +++ b/src/serializers/USDSerializer.h @@ -86,7 +86,7 @@ private: std::set emitted_names_; std::map element_names_; public: - USDSerializer(const std::string&, const ifcopenshell::geometry::Settings&, const ifcopenshell::geometry::SerializerSettings&, ::logger& logger = ::logger::root()); + USDSerializer(const std::string&, const ifcopenshell::geometry::Settings&, const ifcopenshell::geometry::SerializerSettings&, ::logger* logger = nullptr); virtual ~USDSerializer(); bool ready() { return ready_; } void writeHeader(); diff --git a/src/serializers/WavefrontObjSerializer.cpp b/src/serializers/WavefrontObjSerializer.cpp index 26c560c21b..7ff35228e2 100644 --- a/src/serializers/WavefrontObjSerializer.cpp +++ b/src/serializers/WavefrontObjSerializer.cpp @@ -27,7 +27,7 @@ #include #include -WaveFrontOBJSerializer::WaveFrontOBJSerializer(const stream_or_filename& obj_filename, const stream_or_filename& mtl_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger) +WaveFrontOBJSerializer::WaveFrontOBJSerializer(const stream_or_filename& obj_filename, const stream_or_filename& mtl_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger) : WriteOnlyGeometrySerializer(geometry_settings, settings, logger) , obj_stream(obj_filename) , mtl_stream(mtl_filename) diff --git a/src/serializers/WavefrontObjSerializer.h b/src/serializers/WavefrontObjSerializer.h index acbcc5c99e..64f1131d8f 100644 --- a/src/serializers/WavefrontObjSerializer.h +++ b/src/serializers/WavefrontObjSerializer.h @@ -35,7 +35,7 @@ private: size_t vcount_total, ncount_total; std::set materials; public: - WaveFrontOBJSerializer(const stream_or_filename& obj_filename, const stream_or_filename& mtl_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger& logger = ::logger::root()); + WaveFrontOBJSerializer(const stream_or_filename& obj_filename, const stream_or_filename& mtl_filename, const ifcopenshell::geometry::Settings& geometry_settings, const ifcopenshell::geometry::SerializerSettings& settings, ::logger* logger = nullptr); virtual ~WaveFrontOBJSerializer() {} bool ready(); void writeHeader();