Work towards space boundaries fix

This commit is contained in:
Thomas Krijnen
2019-10-06 19:03:31 +02:00
parent f391b425ba
commit a5de17228a
13 changed files with 292 additions and 28 deletions
+6 -2
View File
@@ -29,7 +29,11 @@ namespace geometry {
typedef boost::function<bool(IfcUtil::IfcBaseEntity*)> filter_t;
class abstract_mapping {
protected:
settings settings_;
public:
abstract_mapping(settings& s) : settings_(s) {}
virtual ifcopenshell::geometry::taxonomy::item* map(const IfcUtil::IfcBaseClass*) = 0;
virtual void get_representations(std::vector<geometry_conversion_task>& tasks, std::vector<filter_t>& filters, settings& s) = 0;
virtual IfcUtil::IfcBaseEntity* get_decomposing_entity(IfcUtil::IfcBaseEntity* product, bool include_openings = true) = 0;
@@ -37,13 +41,13 @@ namespace geometry {
};
namespace impl {
typedef boost::function1<abstract_mapping*, IfcParse::IfcFile*> mapping_fn;
typedef boost::function2<abstract_mapping*, IfcParse::IfcFile*, settings&> mapping_fn;
class MappingFactoryImplementation : public std::map<std::string, mapping_fn> {
public:
MappingFactoryImplementation();
void bind(const std::string& schema_name, mapping_fn);
abstract_mapping* construct(IfcParse::IfcFile*);
abstract_mapping* construct(IfcParse::IfcFile*, settings&);
};
MappingFactoryImplementation& mapping_implementations();