Remove templates on iterator and element

This commit is contained in:
Thomas Krijnen
2021-07-11 15:00:59 +02:00
parent ff73f82798
commit eeaf04c6ea
25 changed files with 203 additions and 293 deletions
+13 -13
View File
@@ -179,7 +179,7 @@ void ColladaSerializer::ColladaExporter::ColladaGeometries::close() {
void ColladaSerializer::ColladaExporter::ColladaScene::add(
const std::string& node_id, const std::string& node_name, const std::string& geom_name,
const std::vector<std::string>& material_ids, const IfcGeom::Transformation<double>& transformation)
const std::vector<std::string>& material_ids, const IfcGeom::Transformation& transformation)
{
if (!scene_opened) {
openVisualScene(scene_id);
@@ -194,13 +194,13 @@ void ColladaSerializer::ColladaExporter::ColladaScene::add(
// The matrix attribute of an entity is basically a 4x3 representation of its ObjectPlacement.
// Note that this placement is absolute, ie it is multiplied with all parent placements.
IfcGeom::Transformation<double>* relative_trsf = 0;
const IfcGeom::Transformation<double>* transformation_towrite = &transformation;
IfcGeom::Transformation* relative_trsf = 0;
const IfcGeom::Transformation* transformation_towrite = &transformation;
// If this is not the first parent, get the relative placement
if (parentNodes.size() > 0)
{
relative_trsf = new IfcGeom::Transformation<double>(matrixStack.top().multiplied(transformation));
relative_trsf = new IfcGeom::Transformation(matrixStack.top().multiplied(transformation));
transformation_towrite = relative_trsf;
}
@@ -231,22 +231,22 @@ void ColladaSerializer::ColladaExporter::ColladaScene::add(
node.end();
}
void ColladaSerializer::ColladaExporter::ColladaScene::addParent(const IfcGeom::Element<double>& parent){
void ColladaSerializer::ColladaExporter::ColladaScene::addParent(const IfcGeom::Element& parent){
//we open the visual scene tag if it's not.
if (!scene_opened) {
openVisualScene(scene_id);
scene_opened = true;
}
const IfcGeom::Transformation<double>& parent_trsf = parent.transformation();
const IfcGeom::Transformation& parent_trsf = parent.transformation();
IfcGeom::Transformation<double>* relative_trsf = 0;
const IfcGeom::Transformation<double>* transformation_towrite = &parent_trsf;
IfcGeom::Transformation* relative_trsf = 0;
const IfcGeom::Transformation* transformation_towrite = &parent_trsf;
// If this is not the first parent, get the relative placement
if (parentNodes.size() > 0)
{
relative_trsf = new IfcGeom::Transformation<double>(matrixStack.top().multiplied(parent_trsf));
relative_trsf = new IfcGeom::Transformation(matrixStack.top().multiplied(parent_trsf));
transformation_towrite = relative_trsf;
}
@@ -390,9 +390,9 @@ void ColladaSerializer::ColladaExporter::startDocument(const std::string& unit_n
asset.add();
}
void ColladaSerializer::ColladaExporter::write(const IfcGeom::TriangulationElement<double>* o)
void ColladaSerializer::ColladaExporter::write(const IfcGeom::TriangulationElement* o)
{
const IfcGeom::Representation::Triangulation<double>& mesh = o->geometry();
const IfcGeom::Representation::Triangulation& mesh = o->geometry();
std::string name = serializer->object_id(o);
collada_id(name);
@@ -451,7 +451,7 @@ std::string ColladaSerializer::differentiateSlabTypes(const IfcUtil::IfcBaseEnti
return result;
}
std::string ColladaSerializer::object_id(const IfcGeom::Element<double>* o) /*override*/
std::string ColladaSerializer::object_id(const IfcGeom::Element* o) /*override*/
{
if (settings_.get(SerializerSettings::USE_ELEMENT_TYPES)) {
const std::string slabSuffix = (o->product() && o->product()->declaration().name() == "IfcSlab")
@@ -544,7 +544,7 @@ void ColladaSerializer::writeHeader() {
exporter.startDocument(unit_name, unit_magnitude);
}
void ColladaSerializer::write(const IfcGeom::TriangulationElement<double>* o) {
void ColladaSerializer::write(const IfcGeom::TriangulationElement* o) {
exporter.write(o);
}
+12 -12
View File
@@ -88,7 +88,7 @@ private:
const std::string scene_id;
bool scene_opened;
std::stack<COLLADASW::Node*> parentNodes;
std::stack<IfcGeom::Transformation<double> > matrixStack;
std::stack<IfcGeom::Transformation> matrixStack;
public:
ColladaScene(const std::string& scene_id, COLLADASW::StreamWriter& stream, ColladaSerializer *_serializer)
: COLLADASW::LibraryVisualScenes(&stream)
@@ -97,8 +97,8 @@ private:
, serializer(_serializer)
{}
void add(const std::string& node_id, const std::string& node_name, const std::string& geom_name,
const std::vector<std::string>& material_ids, const IfcGeom::Transformation<double>& matrix);
void addParent(const IfcGeom::Element<double>& parent);
const std::vector<std::string>& material_ids, const IfcGeom::Transformation& matrix);
void addParent(const IfcGeom::Element& parent);
void closeParent();
COLLADASW::Node* GetDirectParent();
void write();
@@ -158,7 +158,7 @@ private:
public:
std::string unique_id, representation_id, type;
IfcGeom::Transformation<double> transformation;
IfcGeom::Transformation transformation;
std::vector<double> vertices;
std::vector<double> normals;
std::vector<int> faces;
@@ -167,9 +167,9 @@ private:
std::vector<IfcGeom::Material> materials;
std::vector<std::string> material_references;
std::vector<double> uvs;
std::vector<const IfcGeom::Element<double>*> parents_;
std::vector<const IfcGeom::Element*> parents_;
DeferredObject(const std::string& unique_id, const std::string& representation_id, const std::string& type, const IfcGeom::Transformation<double>& transformation,
DeferredObject(const std::string& unique_id, const std::string& representation_id, const std::string& type, const IfcGeom::Transformation& transformation,
const std::vector<double>& vertices, const std::vector<double>& normals, const std::vector<int>& faces,
const std::vector<int>& edges, const std::vector<int>& material_ids, const std::vector<IfcGeom::Material>& materials,
const std::vector<std::string>& material_references, const std::vector<double>& uvs)
@@ -187,8 +187,8 @@ private:
, uvs(uvs)
{}
std::vector<const IfcGeom::Element<double>*>& parents() { return parents_; }
const std::vector<const IfcGeom::Element<double>*>& parents() const { return parents_; }
std::vector<const IfcGeom::Element*>& parents() { return parents_; }
const std::vector<const IfcGeom::Element*>& parents() const { return parents_; }
};
COLLADABU::NativeString filename;
COLLADASW::StreamWriter stream;
@@ -211,7 +211,7 @@ private:
std::vector<DeferredObject> deferreds;
virtual ~ColladaExporter() {}
void startDocument(const std::string& unit_name, float unit_magnitude);
void write(const IfcGeom::TriangulationElement<double>* o);
void write(const IfcGeom::TriangulationElement* o);
void endDocument();
};
ColladaExporter exporter;
@@ -229,8 +229,8 @@ public:
}
bool ready();
void writeHeader();
void write(const IfcGeom::TriangulationElement<double>* o);
void write(const IfcGeom::BRepElement<double>* /*o*/) {}
void write(const IfcGeom::TriangulationElement* o);
void write(const IfcGeom::BRepElement* /*o*/) {}
void finalize();
bool isTesselated() const { return true; }
void setUnitNameAndMagnitude(const std::string& name, float magnitude) {
@@ -239,7 +239,7 @@ public:
}
void setFile(IfcParse::IfcFile*) {}
std::string object_id(const IfcGeom::Element<double>* o) /*override*/;
std::string object_id(const IfcGeom::Element* o) /*override*/;
private:
static std::string differentiateSlabTypes(const IfcUtil::IfcBaseEntity* slab);
+3 -3
View File
@@ -70,15 +70,15 @@ public:
virtual ~GeometrySerializer() {}
virtual bool isTesselated() const = 0;
virtual void write(const IfcGeom::TriangulationElement<double>* o) = 0;
virtual void write(const IfcGeom::BRepElement<double>* o) = 0;
virtual void write(const IfcGeom::TriangulationElement* o) = 0;
virtual void write(const IfcGeom::BRepElement* o) = 0;
virtual void setUnitNameAndMagnitude(const std::string& name, float magnitude) = 0;
const SerializerSettings& settings() const { return settings_; }
SerializerSettings& settings() { return settings_; }
/// Returns ID for the object depending on the used setting.
virtual std::string object_id(const IfcGeom::Element<double>* o)
virtual std::string object_id(const IfcGeom::Element* o)
{
if (settings_.get(SerializerSettings::USE_ELEMENT_GUIDS)) return o->guid();
if (settings_.get(SerializerSettings::USE_ELEMENT_NAMES)) return o->name();
+1 -1
View File
@@ -157,7 +157,7 @@ size_t write_accessor(json& j, std::ofstream& ofs, It begin, It end) {
return j["accessors"].size() - 1;
}
void GltfSerializer::write(const IfcGeom::TriangulationElement<double>* o) {
void GltfSerializer::write(const IfcGeom::TriangulationElement* o) {
if (o->geometry().material_ids().empty()) {
return;
}
+2 -2
View File
@@ -42,8 +42,8 @@ public:
virtual ~GltfSerializer();
bool ready();
void writeHeader();
void write(const IfcGeom::TriangulationElement<double>* o);
void write(const IfcGeom::BRepElement<double>* /*o*/) {}
void write(const IfcGeom::TriangulationElement* o);
void write(const IfcGeom::BRepElement* /*o*/) {}
void finalize();
bool isTesselated() const { return true; }
void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {}
+3 -3
View File
@@ -54,7 +54,7 @@ void HdfSerializer::writeHeader() {
}
void HdfSerializer::write(const IfcGeom::BRepElement<double>* o) {
void HdfSerializer::write(const IfcGeom::BRepElement* o) {
std::string guid = o->guid();
@@ -72,8 +72,8 @@ void HdfSerializer::write(const IfcGeom::BRepElement<double>* o) {
const IfcGeom::Representation::Serialization serialization(brepmesh);
std::string brep_data = serialization.brep_data();
const IfcGeom::TriangulationElement<double>triangular_element(*o);
const IfcGeom::Representation::Triangulation<double>& mesh = triangular_element.geometry();
const IfcGeom::TriangulationElement triangular_element(*o);
const IfcGeom::Representation::Triangulation& mesh = triangular_element.geometry();
const int vcount = (int)mesh.verts().size() / 3;
const int fcount = (int)mesh.faces().size() / 3;
const bool isyup = settings().get(SerializerSettings::USE_Y_UP);
+2 -2
View File
@@ -46,8 +46,8 @@ public:
virtual ~HdfSerializer() {}
bool ready();
void writeHeader();
void write(const IfcGeom::BRepElement<double>* o);
void write(const IfcGeom::TriangulationElement<double>* /*o*/) {}
void write(const IfcGeom::BRepElement* o);
void write(const IfcGeom::TriangulationElement* /*o*/) {}
void finalize() {}
bool isTesselated() const { return false; }
void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {}
@@ -36,7 +36,7 @@ bool OpenCascadeBasedSerializer::ready() {
return succeeded;
}
void OpenCascadeBasedSerializer::write(const IfcGeom::BRepElement<double>* o) {
void OpenCascadeBasedSerializer::write(const IfcGeom::BRepElement* o) {
TopoDS_Shape compound = o->geometry().as_compound();
gp_Trsf trsf = o->transformation().data();
const IfcGeom::ElementSettings& settings = o->geometry().settings();
+2 -2
View File
@@ -39,8 +39,8 @@ public:
void writeHeader() {}
bool ready();
virtual void writeShape(const std::string& name, const TopoDS_Shape& shape) = 0;
void write(const IfcGeom::TriangulationElement<double>* /*o*/) {}
void write(const IfcGeom::BRepElement<double>* o);
void write(const IfcGeom::TriangulationElement* /*o*/) {}
void write(const IfcGeom::BRepElement* o);
bool isTesselated() const { return false; }
void setFile(IfcParse::IfcFile*) {}
};
+4 -4
View File
@@ -339,7 +339,7 @@ SvgSerializer::path_object& SvgSerializer::start_path(const gp_Pln& pln, const s
}
namespace {
boost::optional<std::pair<IfcUtil::IfcBaseEntity*, double>> storey_elevation_from_element(const IfcGeom::BRepElement<double>* o) {
boost::optional<std::pair<IfcUtil::IfcBaseEntity*, double>> storey_elevation_from_element(const IfcGeom::BRepElement* o) {
for (const auto& p : o->parents()) {
if (p->type() == "IfcBuildingStorey") {
try {
@@ -503,7 +503,7 @@ namespace {
}
}
void SvgSerializer::write(const IfcGeom::BRepElement<double>* brep_obj) {
void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) {
boost::optional<std::string> object_type;
if (!brep_obj->product()->get("ObjectType")->isNull()) {
@@ -2052,7 +2052,7 @@ return oss.str();
}
}
std::string SvgSerializer::nameElement(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element<double>* elem) {
std::string SvgSerializer::nameElement(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element* elem) {
auto n = elem->name();
IfcUtil::escape_xml(n);
@@ -2178,7 +2178,7 @@ namespace {
std::string SvgSerializer::writeMetadata(const drawing_meta& m) {
gp_Trsf trsf;
trsf.SetTransformation(m.pln_3d.Position(), gp::XOY());
auto m43 = IfcGeom::Matrix<double>(IfcGeom::ElementSettings(IfcGeom::IteratorSettings(), 1., ""), trsf).data();
auto m43 = IfcGeom::Matrix(IfcGeom::ElementSettings(IfcGeom::IteratorSettings(), 1., ""), trsf).data();
std::array<std::array<double, 4>, 4> m4 = {{
{{ (double)m43[0], (double)m43[3], (double)m43[6], (double)m43[9] }},
{{ (double)m43[1], (double)m43[4], (double)m43[7], (double)m43[10] }},
+4 -4
View File
@@ -215,8 +215,8 @@ public:
void writeHeader();
void doWriteHeader();
bool ready();
void write(const IfcGeom::TriangulationElement<double>* /*o*/) {}
void write(const IfcGeom::BRepElement<double>* o);
void write(const IfcGeom::TriangulationElement* /*o*/) {}
void write(const IfcGeom::BRepElement* o);
void write(path_object& p, const TopoDS_Wire& wire, boost::optional<std::vector<double>> dash_array=boost::none);
void write(const geometry_data& data);
path_object& start_path(const gp_Pln& p, IfcUtil::IfcBaseEntity* storey, const std::string& id);
@@ -279,10 +279,10 @@ public:
void setDrawingCenter(double x, double y) {
center_x_ = x; center_y_ = y;
}
std::string nameElement(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element<double>* elem);
std::string nameElement(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element* elem);
std::string nameElement(const IfcUtil::IfcBaseEntity* elem);
std::string idElement(const IfcUtil::IfcBaseEntity* elem);
std::string object_id(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element<double>* o) {
std::string object_id(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element* o) {
if (storey) {
return idElement(storey) + "-" + GeometrySerializer::object_id(o);
} else {
+1 -1
View File
@@ -84,7 +84,7 @@ void WaveFrontOBJSerializer::writeMaterial(const IfcGeom::Material& style)
}
}
void WaveFrontOBJSerializer::write(const IfcGeom::TriangulationElement<double>* o)
void WaveFrontOBJSerializer::write(const IfcGeom::TriangulationElement* o)
{
obj_stream << "g " << object_id(o) << "\n";
obj_stream << "s 1" << "\n";
+2 -2
View File
@@ -40,8 +40,8 @@ public:
bool ready();
void writeHeader();
void writeMaterial(const IfcGeom::Material& style);
void write(const IfcGeom::TriangulationElement<double>* o);
void write(const IfcGeom::BRepElement<double>* /*o*/) {}
void write(const IfcGeom::TriangulationElement* o);
void write(const IfcGeom::BRepElement* /*o*/) {}
void finalize() {}
bool isTesselated() const { return true; }
void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {}