From f3c9b8ee972e0393f7eecf84bb445ddc00053c9b Mon Sep 17 00:00:00 2001 From: bgbsww Date: Fri, 2 Feb 2024 09:10:13 -0500 Subject: [PATCH] Delinting pass --- src/Mod/Part/App/Geometry.cpp | 401 +++++++++++++++++----------------- src/Mod/Part/App/Geometry.h | 181 ++++++++------- 2 files changed, 298 insertions(+), 284 deletions(-) diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index 564d753e16..8759347ccd 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -63,10 +63,6 @@ # include # include # include -# if OCC_VERSION_HEX < 0x070600 -# include -# include -# endif # include # include # include @@ -95,15 +91,13 @@ # include # include # include -# include -# include # include # include # include -# include # include # if OCC_VERSION_HEX < 0x070600 +# include # include # endif @@ -117,6 +111,7 @@ #include #include #include +#include #include "Geometry.h" #include "ArcOfCirclePy.h" @@ -197,40 +192,43 @@ const char* gce_ErrorStatusText(gce_ErrorType et) // --------------------------------------------------------------- -TYPESYSTEM_SOURCE_ABSTRACT(Part::Geometry,Base::Persistence) +TYPESYSTEM_SOURCE_ABSTRACT(Part::Geometry,Base::Persistence) // NOLINT -Geometry::Geometry() +Geometry::Geometry() // NOLINT { createNewTag(); } Geometry::~Geometry() = default; -bool Geometry::hasSameExtensions(const Geometry &other) const +bool Geometry::hasSameExtensions(const Geometry& other) const { // We skip non persistent extension while doing comparison. Not sure if // this will cause any problem. - size_t i = 0; - for (const auto &e : extensions) { - if (auto ext = Base::freecad_dynamic_cast< - const GeometryPersistenceExtension>(e.get())) { - for (;i < other.extensions.size(); ++i) { - if (auto extOther = Base::freecad_dynamic_cast< - const GeometryPersistenceExtension>(other.extensions[i].get())) { - if (!ext->isSame(*extOther)) + size_t index = 0; + for (const auto& ext : extensions) { + if (auto persistExt = + Base::freecad_dynamic_cast(ext.get())) { + for (; index < other.extensions.size(); ++index) { + if (auto extOther = Base::freecad_dynamic_cast( + other.extensions[index].get())) { + if (!persistExt->isSame(*extOther)) { return false; + } break; } } - if (i >= other.extensions.size()) + if (index >= other.extensions.size()) { return false; - ++i; + } + ++index; } } - for (;i < other.extensions.size(); ++i) { + for (; index < other.extensions.size(); ++index) { if (Base::freecad_dynamic_cast( - other.extensions[i].get())) + other.extensions[index].get())) { return false; + } } return true; } @@ -241,37 +239,37 @@ unsigned int Geometry::getMemSize () const return 1; } -std::unique_ptr Geometry::fromShape(const TopoDS_Shape &s, bool silent) +std::unique_ptr Geometry::fromShape(const TopoDS_Shape &shape, bool silent) { std::unique_ptr geom; - if (s.IsNull()) { + if (shape.IsNull()) { if(!silent) throw Base::ValueError("Null shape"); return geom; } - switch (s.ShapeType()) { + switch (shape.ShapeType()) { case TopAbs_VERTEX: { - gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(s)); - geom.reset(new GeomPoint(Base::Vector3d(p.X(),p.Y(),p.Z()))); + gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(shape)); + geom = std::make_unique(Base::Vector3d(p.X(),p.Y(),p.Z())); break; } case TopAbs_EDGE: { - const TopoDS_Edge& e = TopoDS::Edge(s); + const TopoDS_Edge& e = TopoDS::Edge(shape); BRepAdaptor_Curve adapt(e); geom = makeFromCurveAdaptor(adapt, silent); break; } case TopAbs_FACE: { - const TopoDS_Face& f = TopoDS::Face(s); + const TopoDS_Face& f = TopoDS::Face(shape); BRepAdaptor_Surface adapt(f); geom = makeFromSurfaceAdaptor(adapt, silent); break; } default: if(!silent) - FC_THROWM(Base::TypeError, "Unsupported shape type " << TopoShape::shapeName(s.ShapeType())); + FC_THROWM(Base::TypeError, "Unsupported shape type " << TopoShape::shapeName(shape.ShapeType())); } return geom; } @@ -310,15 +308,15 @@ void Geometry::Restore(Base::XMLReader &reader) long count = reader.getAttributeAsInteger("count"); - for (long i = 0; i < count; i++) { + for (long index = 0; index < count; index++) { reader.readElement("GeoExtension"); const char* TypeName = reader.getAttribute("type"); Base::Type type = Base::Type::fromName(TypeName); - GeometryPersistenceExtension *newE = static_cast(type.createInstance()); - if (newE) { - newE->Restore(reader); + auto *newExtension = static_cast(type.createInstance()); + if (newExtension) { + newExtension->Restore(reader); - extensions.push_back(std::shared_ptr(newE)); + extensions.push_back(std::shared_ptr(newExtension)); } else { Base::Console().Warning("Cannot restore geometry extension of type: %s\n", TypeName); @@ -329,7 +327,7 @@ void Geometry::Restore(Base::XMLReader &reader) } else if(strcmp(reader.localName(),"Construction") == 0) { // legacy - bool construction = (int)reader.getAttributeAsInteger("value")==0?false:true; + bool construction = (int)reader.getAttributeAsInteger("value") != 0; // prepare migration if(!this->hasExtension(GeometryMigrationExtension::getClassTypeId())) @@ -353,30 +351,29 @@ std::vector> Geometry::getExtensions() co { std::vector> wp; - for(auto & ext:extensions) + for (auto& ext : extensions) { wp.push_back(ext); + } return wp; } bool Geometry::hasExtension(const Base::Type & type) const { - for(const auto& ext : extensions) { - if(ext->getTypeId() == type) - return true; - } - - return false; + return std::any_of(extensions.begin(), + extensions.end(), + [type](auto geoExt) { + return geoExt->getTypeId() == type; + }); } bool Geometry::hasExtension(const std::string & name) const { - for(const auto& ext : extensions) { - if(ext->getName() == name) - return true; - } - - return false; + return std::any_of(extensions.begin(), + extensions.end(), + [name](auto geoExt) { + return geoExt->getName() == name; + }); } std::weak_ptr Geometry::getExtension(const Base::Type & type) @@ -477,9 +474,9 @@ void Geometry::assignTag(const Part::Geometry * geo) throw Base::TypeError("Geometry tag can not be assigned as geometry types do not match."); } -void Geometry::copyNonTag(const Part::Geometry * src) +void Geometry::copyNonTag(const Part::Geometry* src) { - for(auto & ext: src->extensions) { + for (auto& ext : src->extensions) { this->extensions.push_back(ext->copy()); extensions.back()->notifyAttachment(this); } @@ -495,19 +492,19 @@ Geometry *Geometry::clone() const return cpy; } -void Geometry::mirror(const Base::Vector3d& point) +void Geometry::mirror(const Base::Vector3d& point) const { gp_Pnt pnt(point.x, point.y, point.z); handle()->Mirror(pnt); } -void Geometry::mirror(const Base::Vector3d& point, const Base::Vector3d& dir) +void Geometry::mirror(const Base::Vector3d& point, const Base::Vector3d& dir) const { gp_Ax1 ax1(gp_Pnt(point.x,point.y,point.z), gp_Dir(dir.x,dir.y,dir.z)); handle()->Mirror(ax1); } -void Geometry::rotate(const Base::Placement& plm) +void Geometry::rotate(const Base::Placement& plm) const { Base::Rotation rot(plm.getRotation()); Base::Vector3d pnt, dir; @@ -521,13 +518,13 @@ void Geometry::rotate(const Base::Placement& plm) handle()->Rotate(ax1, angle); } -void Geometry::scale(const Base::Vector3d& vec, double scale) +void Geometry::scale(const Base::Vector3d& vec, double scale) const { gp_Pnt pnt(vec.x, vec.y, vec.z); handle()->Scale(pnt, scale); } -void Geometry::transform(const Base::Matrix4D& mat) +void Geometry::transform(const Base::Matrix4D& mat) const { gp_Trsf trf; trf.SetValues(mat[0][0],mat[0][1],mat[0][2],mat[0][3], @@ -536,7 +533,7 @@ void Geometry::transform(const Base::Matrix4D& mat) handle()->Transform(trf); } -void Geometry::translate(const Base::Vector3d& vec) +void Geometry::translate(const Base::Vector3d& vec) const { gp_Vec trl(vec.x, vec.y, vec.z); handle()->Translate(trl); @@ -577,7 +574,7 @@ void GeomPoint::setHandle(const Handle(Geom_CartesianPoint)& p) Geometry *GeomPoint::copy() const { - GeomPoint *newPoint = new GeomPoint(myPoint); + auto newPoint = new GeomPoint(myPoint); newPoint->copyNonTag(this); return newPoint; } @@ -643,7 +640,7 @@ PyObject *GeomPoint::getPyObject() bool GeomPoint::isSame(const Geometry &other, double tol, double) const { return other.getTypeId() == getTypeId() - && Base::DistanceP2(static_cast(other).getPoint(),getPoint()) <= tol*tol; + && Base::DistanceP2(dynamic_cast(other).getPoint(),getPoint()) <= tol*tol; } // ------------------------------------------------- @@ -694,20 +691,20 @@ static Standard_Boolean IsLinear(const Adaptor3d_Curve& theC) bool GeomCurve::isLinear(Base::Vector3d *dir, Base::Vector3d *base) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); - return isLinear(c, dir, base); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); + return isLinear(curve, dir, base); } -bool GeomCurve::isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir, Base::Vector3d *base) +bool GeomCurve::isLinear(const Handle(Geom_Curve) &curve, Base::Vector3d *dir, Base::Vector3d *base) { - GeomAdaptor_Curve adaptor(c); + GeomAdaptor_Curve adaptor(curve); if (!IsLinear(adaptor)) return false; if (dir || base) { if (adaptor.GetType() == GeomAbs_Line) { // Special treatment of Geom_Line because it is infinite - Handle(Geom_Line) curv = Handle(Geom_Line)::DownCast(c); + Handle(Geom_Line) curv = Handle(Geom_Line)::DownCast(curve); if (base) { gp_Pnt Pos = curv->Lin().Location(); *base = Base::Vector3d(Pos.X(), Pos.Y(), Pos.Z()); @@ -719,8 +716,8 @@ bool GeomCurve::isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir, Base: return true; } try { - GeomLProp_CLProps prop1(c,c->FirstParameter(),0,Precision::Confusion()); - GeomLProp_CLProps prop2(c,c->LastParameter(),0,Precision::Confusion()); + GeomLProp_CLProps prop1(curve,curve->FirstParameter(),0,Precision::Confusion()); + GeomLProp_CLProps prop2(curve,curve->LastParameter(),0,Precision::Confusion()); const gp_Pnt &p1 = prop1.Value(); const gp_Pnt &p2 = prop2.Value(); if (base) @@ -735,7 +732,7 @@ bool GeomCurve::isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir, Base: return true; } -GeomLine* GeomCurve::toLine(bool clone) const +GeomLine* GeomCurve::toLine(KeepTag clone) const { if (!isLinear()) return nullptr; @@ -744,20 +741,21 @@ GeomLine* GeomCurve::toLine(bool clone) const auto p2 = pointAtParameter(getLastParameter()); auto res = new GeomLine(p1, p2-p1); res->copyNonTag(this); - if (clone) + if (clone == CopyTag) { res->tag = this->tag; + } return res; } -GeomLineSegment* GeomCurve::toLineSegment(bool clone) const +GeomLineSegment* GeomCurve::toLineSegment(KeepTag clone) const { if (!isLinear()) return nullptr; Base::Vector3d start, end; if (isDerivedFrom(GeomBoundedCurve::getClassTypeId())) { - start = static_cast(this)->getStartPoint(); - end = static_cast(this)->getEndPoint(); + start = dynamic_cast(this)->getStartPoint(); + end = dynamic_cast(this)->getEndPoint(); } else { start = pointAtParameter(getFirstParameter()); end = pointAtParameter(getLastParameter()); @@ -765,8 +763,9 @@ GeomLineSegment* GeomCurve::toLineSegment(bool clone) const auto res = new GeomLineSegment; res->setPoints(start, end); res->copyNonTag(this); - if (clone) + if (clone == CopyTag) { res->tag = this->tag; + } return res; } @@ -787,8 +786,8 @@ GeomBSplineCurve* GeomCurve::toNurbs(double first, double last) const bool GeomCurve::tangent(double u, gp_Dir& dir) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); - GeomLProp_CLProps prop(c,u,1,Precision::Confusion()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); + GeomLProp_CLProps prop(curve, u,1,Precision::Confusion()); if (prop.IsTangentDefined()) { prop.Tangent(dir); return true; @@ -812,17 +811,17 @@ bool GeomCurve::tangent(double u, Base::Vector3d& dir) const Base::Vector3d GeomCurve::value(double u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); - const gp_Pnt &point = c->Value(u); + const gp_Pnt &point = curve->Value(u); return Base::Vector3d(point.X(),point.Y(),point.Z()); } Base::Vector3d GeomCurve::pointAtParameter(double u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); - GeomLProp_CLProps prop(c,u,0,Precision::Confusion()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); + GeomLProp_CLProps prop(curve, u,0,Precision::Confusion()); const gp_Pnt &point=prop.Value(); @@ -831,8 +830,8 @@ Base::Vector3d GeomCurve::pointAtParameter(double u) const Base::Vector3d GeomCurve::firstDerivativeAtParameter(double u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); - GeomLProp_CLProps prop(c,u,1,Precision::Confusion()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); + GeomLProp_CLProps prop(curve, u,1,Precision::Confusion()); const gp_Vec &vec=prop.D1(); @@ -841,8 +840,8 @@ Base::Vector3d GeomCurve::firstDerivativeAtParameter(double u) const Base::Vector3d GeomCurve::secondDerivativeAtParameter(double u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); - GeomLProp_CLProps prop(c,u,2,Precision::Confusion()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); + GeomLProp_CLProps prop(curve, u,2,Precision::Confusion()); const gp_Vec &vec=prop.D2(); @@ -851,11 +850,11 @@ Base::Vector3d GeomCurve::secondDerivativeAtParameter(double u) const bool GeomCurve::normalAt(double u, Base::Vector3d& dir) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { - if (!c.IsNull()) { - GeomLProp_CLProps prop(c,u,2,Precision::Confusion()); + if (!curve.IsNull()) { + GeomLProp_CLProps prop(curve, u,2,Precision::Confusion()); gp_Dir gdir; prop.Normal(gdir); dir = Base::Vector3d(gdir.X(), gdir.Y(), gdir.Z()); @@ -867,8 +866,8 @@ bool GeomCurve::normalAt(double u, Base::Vector3d& dir) const dir.Set(0,0,0); return false; } - catch (Standard_Failure& e) { - THROWM(Base::CADKernelError,e.GetMessageString()) + catch (Standard_Failure& exc) { + THROWM(Base::CADKernelError, exc.GetMessageString()) } return false; @@ -882,12 +881,12 @@ bool GeomCurve::normalAt(const Base::Vector3d & curvepoint, Base::Vector3d & dir return normalAt(u, dir); } -bool GeomCurve::intersect( const GeomCurve *c, +bool GeomCurve::intersect( const GeomCurve *curve, std::vector>& points, double tol) const { Handle(Geom_Curve) curve1 = Handle(Geom_Curve)::DownCast(handle()); - Handle(Geom_Curve) curve2 = Handle(Geom_Curve)::DownCast(c->handle()); + Handle(Geom_Curve) curve2 = Handle(Geom_Curve)::DownCast(curve->handle()); if(!curve1.IsNull() && !curve2.IsNull()) { return intersect(curve1,curve2,points, tol); @@ -897,7 +896,7 @@ bool GeomCurve::intersect( const GeomCurve *c, } -bool GeomCurve::intersect(const Handle(Geom_Curve) curve1, const Handle(Geom_Curve) curve2, +bool GeomCurve::intersect(const Handle(Geom_Curve)& curve1, const Handle(Geom_Curve)& curve2, std::vector>& points, double tol) { @@ -934,55 +933,55 @@ bool GeomCurve::intersect(const Handle(Geom_Curve) curve1, const Handle(Geom_Cur return false; } - for (int i = 1; i <= intersector.NbExtrema(); i++) { - if (intersector.Distance(i) > tol) + for (int index = 1; index <= intersector.NbExtrema(); index++) { + if (intersector.Distance(index) > tol) continue; gp_Pnt p1, p2; - intersector.Points(i, p1, p2); + intersector.Points(index, p1, p2); points.emplace_back(Base::Vector3d(p1.X(),p1.Y(),p1.Z()),Base::Vector3d(p2.X(),p2.Y(),p2.Z())); } } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { // Yes Extrema finding failed, but if we got an intersection then go on with it - if(points.size()>0) - return points.size()>0?true:false; + if(!points.empty()) + return !points.empty(); else - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError,exc.GetMessageString()) } - return !points.empty()?true:false; + return !points.empty(); } bool GeomCurve::closestParameter(const Base::Vector3d& point, double &u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { - if (!c.IsNull()) { + if (!curve.IsNull()) { gp_Pnt pnt(point.x,point.y,point.z); - GeomAPI_ProjectPointOnCurve ppc(pnt, c); + GeomAPI_ProjectPointOnCurve ppc(pnt, curve); u = ppc.LowerDistanceParameter(); return true; } } - catch (StdFail_NotDone& e) { - if (c->IsKind(STANDARD_TYPE(Geom_BoundedCurve))){ - Base::Vector3d firstpoint = this->pointAtParameter(c->FirstParameter()); - Base::Vector3d lastpoint = this->pointAtParameter(c->LastParameter()); + catch (StdFail_NotDone& exc) { + if (curve->IsKind(STANDARD_TYPE(Geom_BoundedCurve))){ + Base::Vector3d firstpoint = this->pointAtParameter(curve->FirstParameter()); + Base::Vector3d lastpoint = this->pointAtParameter(curve->LastParameter()); if((firstpoint-point).Length() < (lastpoint-point).Length()) - u = c->FirstParameter(); + u = curve->FirstParameter(); else - u = c->LastParameter(); + u = curve->LastParameter(); } else - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) return true; } - catch (Standard_Failure& e) { - THROWM(Base::CADKernelError,e.GetMessageString()) + catch (Standard_Failure& exc) { + THROWM(Base::CADKernelError, exc.GetMessageString()) } return false; @@ -990,9 +989,9 @@ bool GeomCurve::closestParameter(const Base::Vector3d& point, double &u) const bool GeomCurve::closestParameterToBasisCurve(const Base::Vector3d& point, double &u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); - if (c->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))){ + if (curve->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))){ Handle(Geom_TrimmedCurve) tc = Handle(Geom_TrimmedCurve)::DownCast(handle()); Handle(Geom_Curve) bc = tc->BasisCurve(); try { @@ -1003,8 +1002,8 @@ bool GeomCurve::closestParameterToBasisCurve(const Base::Vector3d& point, double return true; } } - catch (Standard_Failure& e) { - THROWM(Base::CADKernelError,e.GetMessageString()) + catch (Standard_Failure& exc) { + THROWM(Base::CADKernelError, exc.GetMessageString()) } return false; @@ -1016,71 +1015,71 @@ bool GeomCurve::closestParameterToBasisCurve(const Base::Vector3d& point, double double GeomCurve::getFirstParameter() const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { // pending check for RealFirst RealLast in case of infinite curve - return c->FirstParameter(); + return curve->FirstParameter(); } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) } } double GeomCurve::getLastParameter() const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { // pending check for RealFirst RealLast in case of infinite curve - return c->LastParameter(); + return curve->LastParameter(); } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) } } double GeomCurve::curvatureAt(double u) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { - GeomLProp_CLProps prop(c,u,2,Precision::Confusion()); + GeomLProp_CLProps prop(curve, u,2,Precision::Confusion()); return prop.Curvature(); } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) } } double GeomCurve::length(double u, double v) const { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { - GeomAdaptor_Curve adaptor(c); + GeomAdaptor_Curve adaptor(curve); return GCPnts_AbscissaPoint::Length(adaptor,u,v,Precision::Confusion()); } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) } } void GeomCurve::reverse() { - Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); + Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle()); try { - c->Reverse(); + curve->Reverse(); } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) } } @@ -1112,20 +1111,20 @@ Base::Vector3d GeomBoundedCurve::getEndPoint() const // ------------------------------------------------- -TYPESYSTEM_SOURCE(Part::GeomBezierCurve,Part::GeomBoundedCurve) +TYPESYSTEM_SOURCE(Part::GeomBezierCurve, Part::GeomBoundedCurve) GeomBezierCurve::GeomBezierCurve() { TColgp_Array1OfPnt poles(1,2); poles(1) = gp_Pnt(0.0,0.0,0.0); poles(2) = gp_Pnt(0.0,0.0,1.0); - Handle(Geom_BezierCurve) b = new Geom_BezierCurve(poles); - this->myCurve = b; + Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(poles); + this->myCurve = bezier; } -GeomBezierCurve::GeomBezierCurve(const Handle(Geom_BezierCurve)& b) +GeomBezierCurve::GeomBezierCurve(const Handle(Geom_BezierCurve)& bezier) { - setHandle(b); + setHandle(bezier); } GeomBezierCurve::GeomBezierCurve( const std::vector& poles, const std::vector& weights) @@ -1133,20 +1132,20 @@ GeomBezierCurve::GeomBezierCurve( const std::vector& poles, cons if (poles.size() != weights.size()) throw Base::ValueError("poles and weights mismatch"); - TColgp_Array1OfPnt p(1,poles.size()); - TColStd_Array1OfReal w(1,poles.size()); - for (std::size_t i = 1; i <= poles.size(); i++) { - p.SetValue(i, gp_Pnt(poles[i-1].x,poles[i-1].y,poles[i-1].z)); - w.SetValue(i, weights[i-1]); + TColgp_Array1OfPnt poleArray(1,poles.size()); + TColStd_Array1OfReal weightArray(1,poles.size()); + for (std::size_t index = 1; index <= poles.size(); index++) { + poleArray.SetValue(index, gp_Pnt(poles[index-1].x,poles[index-1].y,poles[index-1].z)); + weightArray.SetValue(index, weights[index-1]); } - this->myCurve = new Geom_BezierCurve (p, w); + this->myCurve = new Geom_BezierCurve (poleArray, weightArray); } GeomBezierCurve::~GeomBezierCurve() = default; -void GeomBezierCurve::setHandle(const Handle(Geom_BezierCurve)& c) +void GeomBezierCurve::setHandle(const Handle(Geom_BezierCurve)& curve) { - myCurve = Handle(Geom_BezierCurve)::DownCast(c->Copy()); + myCurve = Handle(Geom_BezierCurve)::DownCast(curve->Copy()); } const Handle(Geom_Geometry)& GeomBezierCurve::handle() const @@ -1156,7 +1155,7 @@ const Handle(Geom_Geometry)& GeomBezierCurve::handle() const Geometry *GeomBezierCurve::copy() const { - GeomBezierCurve *newCurve = new GeomBezierCurve(myCurve); + auto *newCurve = new GeomBezierCurve(myCurve); newCurve->copyNonTag(this); return newCurve; } @@ -1165,11 +1164,11 @@ std::vector GeomBezierCurve::getPoles() const { std::vector poles; poles.reserve(myCurve->NbPoles()); - TColgp_Array1OfPnt p(1,myCurve->NbPoles()); - myCurve->Poles(p); + TColgp_Array1OfPnt poleArray(1,myCurve->NbPoles()); + myCurve->Poles(poleArray); - for (Standard_Integer i=p.Lower(); i<=p.Upper(); i++) { - const gp_Pnt& pnt = p(i); + for (Standard_Integer index=poleArray.Lower(); index<=poleArray.Upper(); index++) { + const gp_Pnt& pnt = poleArray(index); poles.emplace_back(pnt.X(), pnt.Y(), pnt.Z()); } return poles; @@ -1179,11 +1178,11 @@ std::vector GeomBezierCurve::getWeights() const { std::vector weights; weights.reserve(myCurve->NbPoles()); - TColStd_Array1OfReal w(1,myCurve->NbPoles()); - myCurve->Weights(w); + TColStd_Array1OfReal weightArray(1,myCurve->NbPoles()); + myCurve->Weights(weightArray); - for (Standard_Integer i=w.Lower(); i<=w.Upper(); i++) { - const Standard_Real& real = w(i); + for (Standard_Integer index=weightArray.Lower(); index<=weightArray.Upper(); index++) { + const Standard_Real& real = weightArray(index); weights.push_back(real); } return weights; @@ -1238,38 +1237,38 @@ void GeomBezierCurve::Restore(Base::XMLReader& reader) // get the value of my attribute int polescount = reader.getAttributeAsInteger("PolesCount"); - TColgp_Array1OfPnt p(1,polescount); - TColStd_Array1OfReal w(1,polescount); + TColgp_Array1OfPnt poleArray(1,polescount); + TColStd_Array1OfReal weightArray(1,polescount); - for (int i = 1; i <= polescount; i++) { + for (int index = 1; index <= polescount; index++) { reader.readElement("Pole"); double X = reader.getAttributeAsFloat("X"); double Y = reader.getAttributeAsFloat("Y"); double Z = reader.getAttributeAsFloat("Z"); double W = reader.getAttributeAsFloat("Weight"); - p.SetValue(i, gp_Pnt(X,Y,Z)); - w.SetValue(i, W); + poleArray.SetValue(index, gp_Pnt(X,Y,Z)); + weightArray.SetValue(index, W); } reader.readEndElement("BezierCurve"); try { - Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(p, w); + Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(poleArray, weightArray); if (!bezier.IsNull()) this->myCurve = bezier; else THROWM(Base::CADKernelError,"BezierCurve restore failed") } - catch (Standard_Failure& e) { + catch (Standard_Failure& exc) { - THROWM(Base::CADKernelError,e.GetMessageString()) + THROWM(Base::CADKernelError, exc.GetMessageString()) } } PyObject *GeomBezierCurve::getPyObject() { - return new BezierCurvePy(static_cast(this->clone())); + return new BezierCurvePy(dynamic_cast(this->clone())); } bool GeomBezierCurve::isSame(const Geometry &_other, double tol, double) const @@ -1277,16 +1276,16 @@ bool GeomBezierCurve::isSame(const Geometry &_other, double tol, double) const if(_other.getTypeId() != getTypeId()) return false; - auto &other = static_cast(_other); + auto &other = dynamic_cast(_other); Standard_Integer c = myCurve->NbPoles(); if(c!= other.myCurve->NbPoles()) return false; double tol2 = tol*tol; - for(Standard_Integer i=1; i<=c; ++i) { - if(myCurve->Pole(i).SquareDistance(other.myCurve->Pole(i)) > tol2 - || fabs(myCurve->Weight(i) - other.myCurve->Weight(i)) > tol) + for(Standard_Integer index =1; index <=c; ++index) { + if(myCurve->Pole(index).SquareDistance(other.myCurve->Pole(index)) > tol2 + || fabs(myCurve->Weight(index) - other.myCurve->Weight(index)) > tol) return false; } return true; @@ -1333,14 +1332,14 @@ GeomBSplineCurve::GeomBSplineCurve( const std::vector& poles, co TColStd_Array1OfReal k(1,knots.size()); TColStd_Array1OfInteger m(1,knots.size()); - for (std::size_t i = 1; i <= poles.size(); i++) { - p.SetValue(i, gp_Pnt(poles[i-1].x,poles[i-1].y,poles[i-1].z)); - w.SetValue(i, weights[i-1]); + for (int index = 1; index <= poles.size(); index++) { + p.SetValue(index, gp_Pnt(poles[index -1].x,poles[index -1].y,poles[index -1].z)); + w.SetValue(index, weights[index -1]); } - for (std::size_t i = 1; i <= knots.size(); i++) { - k.SetValue(i, knots[i-1]); - m.SetValue(i, multiplicities[i-1]); + for (int index = 1; index <= knots.size(); index++) { + k.SetValue(index, knots[index -1]); + m.SetValue(index, multiplicities[index -1]); } this->myCurve = new Geom_BSplineCurve (p, w, k, m, degree, periodic?Standard_True:Standard_False, checkrational?Standard_True:Standard_False); @@ -1350,9 +1349,9 @@ GeomBSplineCurve::GeomBSplineCurve( const std::vector& poles, co GeomBSplineCurve::~GeomBSplineCurve() = default; -void GeomBSplineCurve::setHandle(const Handle(Geom_BSplineCurve)& c) +void GeomBSplineCurve::setHandle(const Handle(Geom_BSplineCurve)& curve) { - myCurve = Handle(Geom_BSplineCurve)::DownCast(c->Copy()); + myCurve = Handle(Geom_BSplineCurve)::DownCast(curve->Copy()); } const Handle(Geom_Geometry)& GeomBSplineCurve::handle() const @@ -1363,12 +1362,12 @@ const Handle(Geom_Geometry)& GeomBSplineCurve::handle() const Geometry *GeomBSplineCurve::copy() const { try { - GeomBSplineCurve *newCurve = new GeomBSplineCurve(myCurve); + auto *newCurve = new GeomBSplineCurve(myCurve); newCurve->copyNonTag(this); return newCurve; } - catch (Standard_Failure& e) { - THROWM(Base::CADKernelError, e.GetMessageString()) + catch (Standard_Failure& exc) { + THROWM(Base::CADKernelError, exc.GetMessageString()) } } @@ -1439,7 +1438,7 @@ void GeomBSplineCurve::setPoles(const std::vector& poles) { Standard_Integer index=1; - for (std::vector::const_iterator it = poles.begin(); it != poles.end(); ++it, index++){ + for (auto it = poles.begin(); it != poles.end(); ++it, index++){ setPole(index, *it); } } @@ -1479,7 +1478,7 @@ void GeomBSplineCurve::setWeights(const std::vector& weights) try { Standard_Integer index=1; - for (std::vector::const_iterator it = weights.begin(); it != weights.end(); ++it, index++){ + for (auto it = weights.begin(); it != weights.end(); ++it, index++){ myCurve->SetWeight(index, *it); } } @@ -1507,7 +1506,7 @@ void GeomBSplineCurve::setKnots(const std::vector& knots) { Standard_Integer index=1; - for (std::vector::const_iterator it = knots.begin(); it != knots.end(); ++it, index++) { + for (auto it = knots.begin(); it != knots.end(); ++it, index++) { setKnot(index, *it); } } @@ -1958,7 +1957,7 @@ void GeomBSplineCurve::Restore(Base::XMLReader& reader) PyObject *GeomBSplineCurve::getPyObject() { - return new BSplineCurvePy(static_cast(this->clone())); + return new BSplineCurvePy(dynamic_cast(this->clone())); } bool GeomBSplineCurve::isSame(const Geometry &_other, double tol, double atol) const @@ -1972,7 +1971,7 @@ bool GeomBSplineCurve::isSame(const Geometry &_other, double tol, double atol) c return false; } - auto &other = static_cast(_other); + auto &other = dynamic_cast(_other); (void)atol; if(countPoles() != other.countPoles() @@ -3940,7 +3939,7 @@ GeomBSplineCurve* GeomParabola::toNurbs(double first, double last) const { // the default implementation suffices because a non-rational B-spline with // one segment is a parabola - return GeomCurve::toNurbs(first, last); + return GeomCurve::toNurbs(first, last); // NOLINT } double GeomParabola::getFocal() const @@ -4373,14 +4372,14 @@ bool GeomLine::isSame(const Geometry &_other, double tol, double atol) const { if(_other.getTypeId() != getTypeId()) { if (_other.isDerivedFrom(GeomCurve::getClassTypeId())) { - std::unique_ptr geo(static_cast(_other).toLine()); + std::unique_ptr geo(dynamic_cast(_other).toLine()); if (geo) return isSame(*geo, tol, atol); } return false; } - auto &other = static_cast(_other); + auto &other = dynamic_cast(_other); return getDir().GetAngle(other.getDir()) <= atol && Base::DistanceP2(getPos(), other.getPos()) <= tol*tol; @@ -4425,7 +4424,7 @@ const Handle(Geom_Geometry)& GeomLineSegment::handle() const Geometry *GeomLineSegment::copy()const { - GeomLineSegment *tempCurve = new GeomLineSegment(); + auto *tempCurve = new GeomLineSegment(); tempCurve->myCurve = Handle(Geom_TrimmedCurve)::DownCast(myCurve->Copy()); tempCurve->copyNonTag(this); return tempCurve; @@ -4463,7 +4462,8 @@ void GeomLineSegment::setPoints(const Base::Vector3d& Start, const Base::Vector3 // get Geom_Line of line segment Handle(Geom_Line) this_line = Handle(Geom_Line)::DownCast (this_curv->BasisCurve()); - Handle(Geom_TrimmedCurve) that_curv = ms.Value(); + Handle(Geom_TrimmedCurve)& that_curv = + const_cast&>(ms.Value()); Handle(Geom_Line) that_line = Handle(Geom_Line)::DownCast(that_curv->BasisCurve()); this_line->SetLin(that_line->Lin()); this_curv->SetTrim(that_curv->FirstParameter(), that_curv->LastParameter()); @@ -4541,7 +4541,7 @@ void GeomLineSegment::Restore (Base::XMLReader &reader) PyObject *GeomLineSegment::getPyObject() { - return new LineSegmentPy(static_cast(this->clone())); + return new LineSegmentPy(dynamic_cast(this->clone())); } // ------------------------------------------------- @@ -4568,12 +4568,12 @@ GeomOffsetCurve::~GeomOffsetCurve() = default; Geometry *GeomOffsetCurve::copy() const { - GeomOffsetCurve *newCurve = new GeomOffsetCurve(myCurve); + auto *newCurve = new GeomOffsetCurve(myCurve); newCurve->copyNonTag(this); return newCurve; } -Base::Vector3d GeomOffsetCurve::getDir(void) const +Base::Vector3d GeomOffsetCurve::getDir() const { gp_Dir Dir = this->myCurve->Direction(); return Base::Vector3d(Dir.X(),Dir.Y(),Dir.Z()); @@ -4612,7 +4612,7 @@ void GeomOffsetCurve::Restore(Base::XMLReader &/*reader*/) PyObject *GeomOffsetCurve::getPyObject() { - return new OffsetCurvePy(static_cast(this->clone())); + return new OffsetCurvePy(dynamic_cast(this->clone())); } bool GeomOffsetCurve::isSame(const Geometry &_other, double tol, double atol) const @@ -4620,7 +4620,7 @@ bool GeomOffsetCurve::isSame(const Geometry &_other, double tol, double atol) co if(_other.getTypeId() != getTypeId()) return false; - auto &other = static_cast(_other); + auto &other = dynamic_cast(_other); if(myCurve->Direction().Angle(other.myCurve->Direction()) > atol || fabs(getOffset() - other.getOffset()) > tol) return false; @@ -4662,10 +4662,11 @@ bool GeomSurface::isPlanar(const Handle(Geom_Surface) &s, gp_Pln *pln, double to GeomPlane* GeomSurface::toPlane(bool clone, double tol) const { if (isDerivedFrom(GeomPlane::getClassTypeId())) { - if (clone) - return static_cast(this->clone()); - else - return static_cast(this->copy()); + if (clone) { + return dynamic_cast(this->clone()); + } else { + return dynamic_cast(this->copy()); + } } gp_Pln pln; @@ -4813,7 +4814,7 @@ void GeomBezierSurface::setHandle(const Handle(Geom_BezierSurface)& b) Geometry *GeomBezierSurface::copy() const { - GeomBezierSurface *newSurf = new GeomBezierSurface(mySurface); + auto *newSurf = new GeomBezierSurface(mySurface); newSurf->copyNonTag(this); return newSurf; } diff --git a/src/Mod/Part/App/Geometry.h b/src/Mod/Part/App/Geometry.h index 7c416cbb4c..183b5de2ba 100644 --- a/src/Mod/Part/App/Geometry.h +++ b/src/Mod/Part/App/Geometry.h @@ -72,6 +72,12 @@ namespace Part { +enum KeepTag +{ + NewTag, // Assign a new tag + CopyTag // Keep the existing tag +}; + class PartExport Geometry: public Base::Persistence { TYPESYSTEM_HEADER_WITH_OVERRIDE(); @@ -114,12 +120,12 @@ public: void deleteExtension(const Base::Type & type); void deleteExtension(const std::string & name); - void mirror(const Base::Vector3d& point); - void mirror(const Base::Vector3d& point, const Base::Vector3d& dir); - void rotate(const Base::Placement& plm); - void scale(const Base::Vector3d& vec, double scale); - void transform(const Base::Matrix4D& mat); - void translate(const Base::Vector3d& vec); + void mirror(const Base::Vector3d& point) const; + void mirror(const Base::Vector3d& point, const Base::Vector3d& dir) const; + void rotate(const Base::Placement& plm) const; + void scale(const Base::Vector3d& vec, double scale) const; + void transform(const Base::Matrix4D& mat) const; + void translate(const Base::Vector3d& vec) const; protected: /// create a new tag for the geometry object @@ -146,8 +152,8 @@ class PartExport GeomPoint : public Geometry TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomPoint(); - GeomPoint(const Handle(Geom_CartesianPoint)&); - GeomPoint(const Base::Vector3d&); + explicit GeomPoint(const Handle(Geom_CartesianPoint)&); + explicit GeomPoint(const Base::Vector3d&); ~GeomPoint() override; Geometry *copy() const override; TopoDS_Shape toShape() const override; @@ -157,8 +163,15 @@ public: void Save(Base::Writer &/*writer*/) const override; void Restore(Base::XMLReader &/*reader*/) override; // Base implementer ---------------------------- - PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + PyObject* getPyObject() override; + /** + * Compare this point to another one. + * @param other Other geometry point. Can pass in Other geometry types but will not match + * @param tol Points meed to be within tol^2 to match. + * @param atol Angle tolerance is not used for points. + * @return True if a match is found. + */ + bool isSame(const Geometry& other, double tol, double atol) const override; const Handle(Geom_Geometry)& handle() const override; void setHandle(const Handle(Geom_CartesianPoint)&); @@ -183,7 +196,7 @@ public: static bool isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir = nullptr, Base::Vector3d *base = nullptr); bool isLinear(Base::Vector3d *dir = nullptr, Base::Vector3d *base = nullptr) const; - TopoDS_Shape toShape() const; + TopoDS_Shape toShape() const override; /*! * \brief toBSpline Converts the curve to a B-spline * \param This is the start parameter of the curve @@ -218,11 +231,11 @@ public: Base::Vector3d value(double u) const; - GeomLine *toLine(bool clone=true) const; - GeomLineSegment *toLineSegment(bool clone=true) const; + GeomLine* toLine(KeepTag clone = CopyTag) const; + GeomLineSegment* toLineSegment(KeepTag clone = CopyTag) const; protected: - static bool intersect(const Handle(Geom_Curve) c, const Handle(Geom_Curve) c2, + static bool intersect(const Handle(Geom_Curve)& c, const Handle(Geom_Curve)& c2, std::vector>& points, double tol = Precision::Confusion()); }; @@ -244,7 +257,7 @@ class PartExport GeomBezierCurve : public GeomBoundedCurve TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomBezierCurve(); - GeomBezierCurve(const Handle(Geom_BezierCurve)&); + explicit GeomBezierCurve(const Handle(Geom_BezierCurve)&); GeomBezierCurve(const std::vector&, const std::vector&); ~GeomBezierCurve() override; Geometry *copy() const override; @@ -271,7 +284,7 @@ class PartExport GeomBSplineCurve : public GeomBoundedCurve TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomBSplineCurve(); - GeomBSplineCurve(const Handle(Geom_BSplineCurve)&); + explicit GeomBSplineCurve(const Handle(Geom_BSplineCurve)&); GeomBSplineCurve( const std::vector& poles, const std::vector& weights, const std::vector& knots, const std::vector& multiplicities, @@ -342,7 +355,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject(void) override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_BSplineCurve)&); const Handle(Geom_Geometry)& handle() const override; @@ -394,9 +407,9 @@ public: PyObject *getPyObject() override = 0; GeomBSplineCurve* toNurbs(double first, double last) const override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; - const Handle(Geom_Geometry)& handle() const = 0; + const Handle(Geom_Geometry)& handle() const override = 0; }; class PartExport GeomTrimmedCurve : public GeomBoundedCurve @@ -404,7 +417,7 @@ class PartExport GeomTrimmedCurve : public GeomBoundedCurve TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomTrimmedCurve(); - GeomTrimmedCurve(const Handle(Geom_TrimmedCurve)&); + explicit GeomTrimmedCurve(const Handle(Geom_TrimmedCurve)&); ~GeomTrimmedCurve() override; Geometry *copy() const override; @@ -415,9 +428,9 @@ public: // Base implementer ---------------------------- PyObject *getPyObject(void) override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; - void setHandle(const Handle(Geom_TrimmedCurve)&); + virtual void setHandle(const Handle(Geom_TrimmedCurve)&); const Handle(Geom_Geometry)& handle() const override; bool intersectBasisCurves( const GeomTrimmedCurve * c, @@ -488,7 +501,7 @@ class PartExport GeomCircle : public GeomConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomCircle(); - GeomCircle(const Handle(Geom_Circle)&); + explicit GeomCircle(const Handle(Geom_Circle)&); ~GeomCircle() override; Geometry *copy() const override; @@ -503,7 +516,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; const Handle(Geom_Geometry)& handle() const override; @@ -518,7 +531,7 @@ class PartExport GeomArcOfCircle : public GeomArcOfConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomArcOfCircle(); - GeomArcOfCircle(const Handle(Geom_Circle)&); + explicit GeomArcOfCircle(const Handle(Geom_Circle)&); ~GeomArcOfCircle() override; Geometry *copy() const override; @@ -538,7 +551,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - void setHandle(const Handle(Geom_TrimmedCurve)&); + void setHandle(const Handle(Geom_TrimmedCurve)&) override; void setHandle(const Handle(Geom_Circle)&); const Handle(Geom_Geometry)& handle() const override; @@ -549,7 +562,7 @@ class PartExport GeomEllipse : public GeomConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomEllipse(); - GeomEllipse(const Handle(Geom_Ellipse)&); + explicit GeomEllipse(const Handle(Geom_Ellipse)&); ~GeomEllipse() override; Geometry *copy() const override; @@ -569,7 +582,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_Ellipse) &e); const Handle(Geom_Geometry)& handle() const override; @@ -583,7 +596,7 @@ class PartExport GeomArcOfEllipse : public GeomArcOfConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomArcOfEllipse(); - GeomArcOfEllipse(const Handle(Geom_Ellipse)&); + explicit GeomArcOfEllipse(const Handle(Geom_Ellipse)&); ~GeomArcOfEllipse() override; Geometry *copy() const override; @@ -606,7 +619,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - void setHandle(const Handle(Geom_TrimmedCurve)&); + void setHandle(const Handle(Geom_TrimmedCurve)&) override; void setHandle(const Handle(Geom_Ellipse)&); const Handle(Geom_Geometry)& handle() const override; }; @@ -617,7 +630,7 @@ class PartExport GeomHyperbola : public GeomConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomHyperbola(); - GeomHyperbola(const Handle(Geom_Hyperbola)&); + explicit GeomHyperbola(const Handle(Geom_Hyperbola)&); ~GeomHyperbola() override; Geometry *copy() const override; @@ -634,7 +647,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; const Handle(Geom_Geometry)& handle() const override; void setHandle(const Handle(Geom_Hyperbola)&); @@ -648,7 +661,7 @@ class PartExport GeomArcOfHyperbola : public GeomArcOfConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomArcOfHyperbola(); - GeomArcOfHyperbola(const Handle(Geom_Hyperbola)&); + explicit GeomArcOfHyperbola(const Handle(Geom_Hyperbola)&); ~GeomArcOfHyperbola() override; Geometry *copy() const override; @@ -671,7 +684,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - void setHandle(const Handle(Geom_TrimmedCurve)&); + void setHandle(const Handle(Geom_TrimmedCurve)&) override; void setHandle(const Handle(Geom_Hyperbola)&); const Handle(Geom_Geometry)& handle() const override; }; @@ -681,7 +694,7 @@ class PartExport GeomParabola : public GeomConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomParabola(); - GeomParabola(const Handle(Geom_Parabola)&); + explicit GeomParabola(const Handle(Geom_Parabola)&); ~GeomParabola() override; Geometry *copy() const override; @@ -696,7 +709,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; const Handle(Geom_Geometry)& handle() const override; void setHandle(const Handle(Geom_Parabola)&); @@ -710,7 +723,7 @@ class PartExport GeomArcOfParabola : public GeomArcOfConic TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomArcOfParabola(); - GeomArcOfParabola(const Handle(Geom_Parabola)&); + explicit GeomArcOfParabola(const Handle(Geom_Parabola)&); ~GeomArcOfParabola() override; Geometry *copy() const override; @@ -730,7 +743,7 @@ public: PyObject *getPyObject() override; GeomBSplineCurve* toNurbs(double first, double last) const override; - void setHandle(const Handle(Geom_TrimmedCurve)&); + void setHandle(const Handle(Geom_TrimmedCurve)&) override; void setHandle(const Handle(Geom_Parabola)&); const Handle(Geom_Geometry)& handle() const override; }; @@ -740,7 +753,7 @@ class PartExport GeomLine : public GeomCurve TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomLine(); - GeomLine(const Handle(Geom_Line)&); + explicit GeomLine(const Handle(Geom_Line)&); GeomLine(const Base::Vector3d& Pos, const Base::Vector3d& Dir); ~GeomLine() override; Geometry *copy() const override; @@ -756,7 +769,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; const Handle(Geom_Geometry)& handle() const override; void setHandle(const Handle(Geom_Line)&); @@ -770,7 +783,7 @@ class PartExport GeomLineSegment : public GeomTrimmedCurve TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomLineSegment(); - GeomLineSegment(const Handle(Geom_Line)& l); + explicit GeomLineSegment(const Handle(Geom_Line)& l); ~GeomLineSegment() override; Geometry *copy() const override; @@ -787,7 +800,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - void setHandle(const Handle(Geom_TrimmedCurve)&); + void setHandle(const Handle(Geom_TrimmedCurve)&) override; void setHandle(const Handle(Geom_Line)&); const Handle(Geom_Geometry)& handle() const override; @@ -800,11 +813,11 @@ public: GeomOffsetCurve(); GeomOffsetCurve(const Handle(Geom_Curve)&, double, const gp_Dir&); GeomOffsetCurve(const Handle(Geom_Curve)&, double, Base::Vector3d&); - GeomOffsetCurve(const Handle(Geom_OffsetCurve)&); + explicit GeomOffsetCurve(const Handle(Geom_OffsetCurve)&); ~GeomOffsetCurve() override; - Geometry *copy(void) const override; + Geometry *copy() const override; - Base::Vector3d getDir(void) const; + Base::Vector3d getDir() const; double getOffset() const; // Persistence implementer --------------------- @@ -814,7 +827,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_OffsetCurve)& c); const Handle(Geom_Geometry)& handle() const override; @@ -868,7 +881,7 @@ class PartExport GeomBezierSurface : public GeomSurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomBezierSurface(); - GeomBezierSurface(const Handle(Geom_BezierSurface)&); + explicit GeomBezierSurface(const Handle(Geom_BezierSurface)&); ~GeomBezierSurface() override; Geometry *copy() const override; @@ -879,7 +892,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_BezierSurface)& b); const Handle(Geom_Geometry)& handle() const override; @@ -893,7 +906,7 @@ class PartExport GeomBSplineSurface : public GeomSurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomBSplineSurface(); - GeomBSplineSurface(const Handle(Geom_BSplineSurface)&); + explicit GeomBSplineSurface(const Handle(Geom_BSplineSurface)&); ~GeomBSplineSurface() override; Geometry *copy() const override; @@ -905,7 +918,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_BSplineSurface)&); const Handle(Geom_Geometry)& handle() const override; @@ -922,22 +935,22 @@ protected: GeomElementarySurface(); public: - virtual ~GeomElementarySurface(); + ~GeomElementarySurface() override; - Base::Vector3d getLocation(void) const; - Base::Vector3d getDir(void) const; - Base::Vector3d getXDir(void) const; - Base::Vector3d getYDir(void) const; + Base::Vector3d getLocation() const; + Base::Vector3d getDir() const; + Base::Vector3d getXDir() const; + Base::Vector3d getYDir() const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; }; class PartExport GeomCylinder : public GeomElementarySurface { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomCylinder(); - GeomCylinder(const Handle(Geom_CylindricalSurface)&); + explicit GeomCylinder(const Handle(Geom_CylindricalSurface)&); ~GeomCylinder() override; Geometry *copy() const override; @@ -946,11 +959,11 @@ public: void Save(Base::Writer &/*writer*/) const override; void Restore(Base::XMLReader &/*reader*/) override; // Base implementer ---------------------------- - PyObject *getPyObject(void) override; + PyObject *getPyObject() override; double getRadius() const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_CylindricalSurface)&); const Handle(Geom_Geometry)& handle() const override; @@ -964,7 +977,7 @@ class PartExport GeomCone : public GeomElementarySurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomCone(); - GeomCone(const Handle(Geom_ConicalSurface)&); + explicit GeomCone(const Handle(Geom_ConicalSurface)&); ~GeomCone() override; Geometry *copy() const override; @@ -973,12 +986,12 @@ public: void Save(Base::Writer &/*writer*/) const override; void Restore(Base::XMLReader &/*reader*/) override; // Base implementer ---------------------------- - PyObject *getPyObject(void) override; + PyObject *getPyObject() override; double getRadius() const; double getSemiAngle() const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_ConicalSurface)&); const Handle(Geom_Geometry)& handle() const override; @@ -995,7 +1008,7 @@ class PartExport GeomSphere : public GeomElementarySurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomSphere(); - GeomSphere(const Handle(Geom_SphericalSurface)&); + explicit GeomSphere(const Handle(Geom_SphericalSurface)&); ~GeomSphere() override; Geometry *copy() const override; @@ -1008,7 +1021,7 @@ public: double getRadius(void) const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_SphericalSurface)&); const Handle(Geom_Geometry)& handle() const override; @@ -1022,7 +1035,7 @@ class PartExport GeomToroid : public GeomElementarySurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomToroid(); - GeomToroid(const Handle(Geom_ToroidalSurface)&); + explicit GeomToroid(const Handle(Geom_ToroidalSurface)&); ~GeomToroid() override; Geometry *copy() const override; @@ -1033,10 +1046,10 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - double getMajorRadius(void) const; - double getMinorRadius(void) const; + double getMajorRadius() const; + double getMinorRadius() const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_ToroidalSurface)&); const Handle(Geom_Geometry)& handle() const override; @@ -1050,8 +1063,8 @@ class PartExport GeomPlane : public GeomElementarySurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomPlane(); - GeomPlane(const Handle(Geom_Plane)&); - GeomPlane(const gp_Pln &pln); + explicit GeomPlane(const Handle(Geom_Plane)&); + explicit GeomPlane(const gp_Pln &pln); ~GeomPlane() override; Geometry *copy() const override; @@ -1062,7 +1075,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_Plane)&); const Handle(Geom_Geometry)& handle() const override; @@ -1077,7 +1090,7 @@ class PartExport GeomOffsetSurface : public GeomSurface public: GeomOffsetSurface(); GeomOffsetSurface(const Handle(Geom_Surface)&, double); - GeomOffsetSurface(const Handle(Geom_OffsetSurface)&); + explicit GeomOffsetSurface(const Handle(Geom_OffsetSurface)&); ~GeomOffsetSurface() override; Geometry *copy() const override; @@ -1090,7 +1103,7 @@ public: double getOffset() const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_OffsetSurface)& s); const Handle(Geom_Geometry)& handle() const override; @@ -1105,8 +1118,8 @@ class PartExport GeomPlateSurface : public GeomSurface public: GeomPlateSurface(); GeomPlateSurface(const Handle(Geom_Surface)&, const Plate_Plate&); - GeomPlateSurface(const GeomPlate_BuildPlateSurface&); - GeomPlateSurface(const Handle(GeomPlate_Surface)&); + explicit GeomPlateSurface(const GeomPlate_BuildPlateSurface&); + explicit GeomPlateSurface(const Handle(GeomPlate_Surface)&); ~GeomPlateSurface() override; Geometry *copy() const override; @@ -1117,7 +1130,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(GeomPlate_Surface)& s); const Handle(Geom_Geometry)& handle() const override; @@ -1131,7 +1144,7 @@ class PartExport GeomTrimmedSurface : public GeomSurface TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomTrimmedSurface(); - GeomTrimmedSurface(const Handle(Geom_RectangularTrimmedSurface)&); + explicit GeomTrimmedSurface(const Handle(Geom_RectangularTrimmedSurface)&); ~GeomTrimmedSurface() override; Geometry *copy() const override; @@ -1142,7 +1155,7 @@ public: // Base implementer ---------------------------- PyObject *getPyObject() override; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + bool isSame(const Geometry &other, double tol, double atol) const override; void setHandle(const Handle(Geom_RectangularTrimmedSurface)& s); const Handle(Geom_Geometry)& handle() const override; @@ -1159,20 +1172,20 @@ protected: GeomSweptSurface(); public: - virtual ~GeomSweptSurface(); + ~GeomSweptSurface() override; - Base::Vector3d getDir(void) const; - virtual bool isSame(const Geometry &other, double tol, double atol) const; + Base::Vector3d getDir() const; + bool isSame(const Geometry &other, double tol, double atol) const override; }; class PartExport GeomSurfaceOfRevolution : public GeomSweptSurface { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: GeomSurfaceOfRevolution(); GeomSurfaceOfRevolution(const Handle(Geom_Curve)&, const gp_Ax1&); - GeomSurfaceOfRevolution(const Handle(Geom_SurfaceOfRevolution)&); + explicit GeomSurfaceOfRevolution(const Handle(Geom_SurfaceOfRevolution)&); ~GeomSurfaceOfRevolution() override; Geometry *copy() const override;