From 834780b726333b0f7255147a7b493d29a7090ffe Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Fri, 16 Mar 2018 13:49:11 +0100 Subject: [PATCH] Schema dependent serializers --- cmake/CMakeLists.txt | 16 +++++++------- src/ifcconvert/IfcConvert.cpp | 10 ++++----- src/ifcgeom_schema_agnostic/Kernel.h | 22 ++++++++++---------- src/serializers/ColladaSerializer.h | 4 ++-- src/serializers/GeometrySerializer.h | 2 +- src/serializers/OpenCascadeBasedSerializer.h | 2 +- src/serializers/StepSerializer.h | 2 +- src/serializers/SvgSerializer.h | 4 ++-- src/serializers/WavefrontObjSerializer.h | 2 +- src/{ifcconvert => serializers}/util.cpp | 2 +- src/{ifcconvert => serializers}/util.h | 0 11 files changed, 34 insertions(+), 32 deletions(-) rename src/{ifcconvert => serializers}/util.cpp (98%) rename src/{ifcconvert => serializers}/util.h (100%) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 3190d81ecc..62dfbaff6a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -430,6 +430,10 @@ ElSE() endif() ENDIF() +if (IFCCONVERT_DOUBLE_PRECISION) + SET(CONVERT_PRECISION "-DIFCCONVERT_DOUBLE_PRECISION") +endif() + INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS} ${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ) @@ -554,7 +558,7 @@ if(NOT MSVC) endif() endif() -set(IFCOPENSHELL_LIBRARIES IfcParse IfcGeom_ifc2x3 IfcGeom_ifc4 IfcGeom IfcGeom_ifc2x3 IfcGeom_ifc4 IfcGeom Serializers_ifc2x3 Serializers_ifc4 IfcGeom Serializers_ifc2x3 Serializers_ifc4 IfcGeom) +set(IFCOPENSHELL_LIBRARIES IfcParse IfcGeom_ifc2x3 IfcGeom_ifc4 IfcGeom IfcGeom_ifc2x3 IfcGeom_ifc4 IfcGeom Serializers_ifc2x3 Serializers_ifc4 Serializers Serializers_ifc2x3 Serializers_ifc4 Serializers) # IfcParse file(GLOB IFCPARSE_H_FILES ../src/ifcparse/*.h) @@ -603,15 +607,15 @@ set(SERIALIZERS_S_FILES ${SERIALIZERS_S_H_FILES} ${SERIALIZERS_S_CPP_FILES}) add_library(Serializers_ifc2x3 ${SERIALIZERS_S_FILES}) add_library(Serializers_ifc4 ${SERIALIZERS_S_FILES}) -set_target_properties(Serializers_ifc2x3 PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIfcSchema=Ifc2x3") +set_target_properties(Serializers_ifc2x3 PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIfcSchema=Ifc2x3 ${CONVERT_PRECISION}") # TODO: Detect based on IfcSchema -set_target_properties(Serializers_ifc4 PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIfcSchema=Ifc4 -DUSE_IFC4") +set_target_properties(Serializers_ifc4 PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIfcSchema=Ifc4 -DUSE_IFC4 ${CONVERT_PRECISION}") TARGET_LINK_LIBRARIES(Serializers_ifc2x3 IfcGeom ${OPENCASCADE_LIBRARIES}) TARGET_LINK_LIBRARIES(Serializers_ifc4 IfcGeom ${OPENCASCADE_LIBRARIES}) add_library(Serializers ${SERIALIZERS_FILES}) -set_target_properties(Serializers PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS) +set_target_properties(Serializers PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS ${CONVERT_PRECISION}") TARGET_LINK_LIBRARIES(Serializers Serializers_ifc2x3 Serializers_ifc4) @@ -621,9 +625,7 @@ if(BUILD_CONVERT) file(GLOB IFCCONVERT_H_FILES ../src/ifcconvert/*.h) set(IFCCONVERT_FILES ${IFCCONVERT_CPP_FILES} ${IFCCONVERT_H_FILES}) ADD_EXECUTABLE(IfcConvert ${IFCCONVERT_FILES}) - if (IFCCONVERT_DOUBLE_PRECISION) - set_target_properties(IfcConvert PROPERTIES COMPILE_FLAGS -DIFCCONVERT_DOUBLE_PRECISION) - endif() + set_target_properties(IfcConvert PROPERTIES COMPILE_FLAGS "${CONVERT_PRECISION}") TARGET_LINK_LIBRARIES(IfcConvert ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES}) if ((NOT WIN32) AND BUILD_SHARED_LIBS) diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp index 36861dab99..bd9dadb7d6 100644 --- a/src/ifcconvert/IfcConvert.cpp +++ b/src/ifcconvert/IfcConvert.cpp @@ -26,11 +26,11 @@ * * ********************************************************************************/ -#include "../ifcconvert/ColladaSerializer.h" -#include "../ifcconvert/IgesSerializer.h" -#include "../ifcconvert/StepSerializer.h" -#include "../ifcconvert/WavefrontObjSerializer.h" -#include "../ifcconvert/SvgSerializer.h" +#include "../serializers/ColladaSerializer.h" +#include "../serializers/IgesSerializer.h" +#include "../serializers/StepSerializer.h" +#include "../serializers/WavefrontObjSerializer.h" +#include "../serializers/SvgSerializer.h" #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" diff --git a/src/ifcgeom_schema_agnostic/Kernel.h b/src/ifcgeom_schema_agnostic/Kernel.h index 8bec392b33..d9b58d2d4c 100644 --- a/src/ifcgeom_schema_agnostic/Kernel.h +++ b/src/ifcgeom_schema_agnostic/Kernel.h @@ -12,17 +12,17 @@ #include -namespace IfcGeom { - - namespace impl { - // LayerAssignments renamed from plural to singular, LayerAssignment, so work around that - IfcEntityList::ptr getLayerAssignments(Ifc2x3::IfcRepresentationItem* item) { - return item->LayerAssignments()->generalize(); - } - IfcEntityList::ptr getLayerAssignments(Ifc4::IfcRepresentationItem* item) { - return item->LayerAssignment()->generalize(); - } +namespace { + // LayerAssignments renamed from plural to singular, LayerAssignment, so work around that + IfcEntityList::ptr getLayerAssignments(Ifc2x3::IfcRepresentationItem* item) { + return item->LayerAssignments()->generalize(); } + IfcEntityList::ptr getLayerAssignments(Ifc4::IfcRepresentationItem* item) { + return item->LayerAssignment()->generalize(); + } +} + +namespace IfcGeom { template class BRepElement; @@ -110,7 +110,7 @@ namespace IfcGeom { Schema::IfcRepresentationItem::list::ptr items = r->as(); for (Schema::IfcRepresentationItem::list::it it = items->begin(); it != items->end(); ++it) { - Schema::IfcPresentationLayerAssignment::list::ptr a = impl::getLayerAssignments(*it)->as(); + Schema::IfcPresentationLayerAssignment::list::ptr a = getLayerAssignments(*it)->as(); for (Schema::IfcPresentationLayerAssignment::list::it jt = a->begin(); jt != a->end(); ++jt) { layers[(*jt)->Name()] = *jt; } diff --git a/src/serializers/ColladaSerializer.h b/src/serializers/ColladaSerializer.h index e64fe39615..ac99fc4b9c 100644 --- a/src/serializers/ColladaSerializer.h +++ b/src/serializers/ColladaSerializer.h @@ -43,7 +43,7 @@ #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" -#include "../ifcconvert/GeometrySerializer.h" +#include "../serializers/GeometrySerializer.h" #include #include @@ -86,7 +86,7 @@ private: const std::string scene_id; bool scene_opened; std::stack parentNodes; - std::stack > matrixStack; + std::stack > matrixStack; public: ColladaScene(const std::string& scene_id, COLLADASW::StreamWriter& stream, ColladaSerializer *_serializer) : COLLADASW::LibraryVisualScenes(&stream) diff --git a/src/serializers/GeometrySerializer.h b/src/serializers/GeometrySerializer.h index f479a81c82..ea12431dd6 100644 --- a/src/serializers/GeometrySerializer.h +++ b/src/serializers/GeometrySerializer.h @@ -26,7 +26,7 @@ typedef double real_t; typedef float real_t; #endif -#include "../ifcconvert/Serializer.h" +#include "../serializers/Serializer.h" #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" #include "../ifcgeom/IfcGeomElement.h" diff --git a/src/serializers/OpenCascadeBasedSerializer.h b/src/serializers/OpenCascadeBasedSerializer.h index 52284eb079..048c1228a4 100644 --- a/src/serializers/OpenCascadeBasedSerializer.h +++ b/src/serializers/OpenCascadeBasedSerializer.h @@ -22,7 +22,7 @@ #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" -#include "../ifcconvert/GeometrySerializer.h" +#include "../serializers/GeometrySerializer.h" class OpenCascadeBasedSerializer : public GeometrySerializer { OpenCascadeBasedSerializer(const OpenCascadeBasedSerializer&); //N/A diff --git a/src/serializers/StepSerializer.h b/src/serializers/StepSerializer.h index eead944930..db9ea54d77 100644 --- a/src/serializers/StepSerializer.h +++ b/src/serializers/StepSerializer.h @@ -25,7 +25,7 @@ #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" -#include "../ifcconvert/OpenCascadeBasedSerializer.h" +#include "../serializers/OpenCascadeBasedSerializer.h" class StepSerializer : public OpenCascadeBasedSerializer { diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h index cb16b699a6..f1ec93cb76 100644 --- a/src/serializers/SvgSerializer.h +++ b/src/serializers/SvgSerializer.h @@ -22,8 +22,8 @@ #ifndef SVGSERIALIZER_H #define SVGSERIALIZER_H -#include "../ifcconvert/GeometrySerializer.h" -#include "../ifcconvert/util.h" +#include "../serializers/GeometrySerializer.h" +#include "../serializers/util.h" #include #include diff --git a/src/serializers/WavefrontObjSerializer.h b/src/serializers/WavefrontObjSerializer.h index 2aa9708bdc..299dc065b6 100644 --- a/src/serializers/WavefrontObjSerializer.h +++ b/src/serializers/WavefrontObjSerializer.h @@ -24,7 +24,7 @@ #include #include -#include "../ifcconvert/GeometrySerializer.h" +#include "../serializers/GeometrySerializer.h" // http://people.sc.fsu.edu/~jburkardt/txt/obj_format.txt class WaveFrontOBJSerializer : public GeometrySerializer { diff --git a/src/ifcconvert/util.cpp b/src/serializers/util.cpp similarity index 98% rename from src/ifcconvert/util.cpp rename to src/serializers/util.cpp index cde3645d72..e04e214ec2 100644 --- a/src/ifcconvert/util.cpp +++ b/src/serializers/util.cpp @@ -20,7 +20,7 @@ #include #include -#include "../ifcconvert/util.h" +#include "../serializers/util.h" using namespace util; diff --git a/src/ifcconvert/util.h b/src/serializers/util.h similarity index 100% rename from src/ifcconvert/util.h rename to src/serializers/util.h