#include "IfcGeomIteratorImplementation.h" #include "../iterator/IteratorImplementation.h" namespace IfcGeom { template class MAKE_TYPE_NAME(IteratorImplementation_); template class MAKE_TYPE_NAME(IteratorImplementation_); } #define MAKE_INIT_FN__(a, b) init_ ## a ## b #define MAKE_INIT_FN_(a, b) MAKE_INIT_FN__(a, b) #define MAKE_INIT_FN(t) MAKE_INIT_FN_(t, IfcSchema) #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) void MAKE_INIT_FN(IteratorImplementation_)() { static const std::string schema_name = TOSTRING(IfcSchema); struct { IfcGeom::IteratorImplementation* operator()(const IfcGeom::IteratorSettings& settings, IfcParse::IfcFile* file) const { return new IfcGeom::MAKE_TYPE_NAME(IteratorImplementation_)(settings, file); } } factory_float; struct { IfcGeom::IteratorImplementation* operator()(const IfcGeom::IteratorSettings& settings, IfcParse::IfcFile* file) const { return new IfcGeom::MAKE_TYPE_NAME(IteratorImplementation_)(settings, file); } } factory_double; static Registrar< IfcGeom::MAKE_TYPE_NAME(IteratorImplementation_) > float_registration(schema_name, factory_float); static Registrar< IfcGeom::MAKE_TYPE_NAME(IteratorImplementation_) > double_registration(schema_name, factory_double); }