More work on isolating into plug-ins

This commit is contained in:
Thomas Krijnen
2026-04-18 15:46:21 +02:00
parent d2cc66fdf0
commit b599ee1040
34 changed files with 1818 additions and 606 deletions
@@ -23,16 +23,13 @@
#include "../../ifcparse/macros.h"
#include <boost/dll/alias.hpp>
#include <boost/make_shared.hpp>
namespace {
struct factory_t {
XmlSerializer* operator()(ifcopenshell::file* file, const std::string& xml_filename) const {
auto* serializer = new POSTFIX_SCHEMA(XmlSerializer)(file, xml_filename);
serializer->setFile(file);
return serializer;
}
};
boost::shared_ptr<Serializer> create_serializer(const ifcopenshell::serializers::document_serializer_context& context) {
return boost::make_shared<POSTFIX_SCHEMA(XmlSerializer)>(context.file, context.output_filename);
}
}
@@ -48,9 +45,11 @@ plugin::metadata plugin_metadata() {
return document_serializer_plugin_metadata("xml", STRINGIFY(IfcSchema));
}
void register_plugin(XmlSerializerFactory::Factory& registry, const plugin::module& module) {
factory_t factory;
registry.bind(STRINGIFY(IfcSchema), factory, module);
void register_plugin(document_serializer_registry& registry, const plugin::module& module) {
document_serializer_info info;
info.format = "xml";
info.schema_name = STRINGIFY(IfcSchema);
registry.bind(info, create_serializer, module);
}
}