Sketcher: GeometryFacade - Add ownership parameter to factory method

This commit is contained in:
Abdullah Tahiri
2021-12-21 20:26:22 +01:00
committed by abdullahtahiriyo
parent 501ebfe921
commit bc6e4c1355
2 changed files with 7 additions and 7 deletions

View File

@@ -43,8 +43,8 @@ GeometryFacade::GeometryFacade(): Geo(nullptr), OwnerGeo(false), SketchGeoExtens
}
GeometryFacade::GeometryFacade(const Part::Geometry * geometry)
: Geo(geometry), OwnerGeo(false)
GeometryFacade::GeometryFacade(const Part::Geometry * geometry, bool owner)
: Geo(geometry), OwnerGeo(owner)
{
assert(geometry != nullptr); // This should never be nullptr, as this constructor is protected
@@ -53,14 +53,14 @@ GeometryFacade::GeometryFacade(const Part::Geometry * geometry)
GeometryFacade::~GeometryFacade()
{
if (OwnerGeo)
if (OwnerGeo && Geo != nullptr)
delete Geo;
}
std::unique_ptr<GeometryFacade> GeometryFacade::getFacade(Part::Geometry * geometry)
std::unique_ptr<GeometryFacade> GeometryFacade::getFacade(Part::Geometry * geometry, bool owner)
{
if(geometry != nullptr)
return std::unique_ptr<GeometryFacade>(new GeometryFacade(geometry));
return std::unique_ptr<GeometryFacade>(new GeometryFacade(geometry, owner));
else
return std::unique_ptr<GeometryFacade>(nullptr);
//return std::make_unique<GeometryFacade>(geometry); // make_unique has no access to private constructor

View File

@@ -100,13 +100,13 @@ class SketcherExport GeometryFacade : public Base::BaseClass, private ISketchGeo
TYPESYSTEM_HEADER_WITH_OVERRIDE();
protected:
GeometryFacade(const Part::Geometry * geometry);
GeometryFacade(const Part::Geometry * geometry, bool owner = false);
GeometryFacade(); // As TYPESYSTEM requirement
friend class GeometryFacadePy;
public: // Factory methods
static std::unique_ptr<GeometryFacade> getFacade(Part::Geometry * geometry);
static std::unique_ptr<GeometryFacade> getFacade(Part::Geometry * geometry, bool owner = false);
static std::unique_ptr<const GeometryFacade> getFacade(const Part::Geometry * geometry);
public: // Utility methods