Sketcher: Separate ExternalGeometryExtension interface from class

This commit is contained in:
Abdullah Tahiri
2020-11-01 07:38:05 +01:00
committed by abdullahtahiriyo
parent 10102f45f7
commit 93dee6ccd7
3 changed files with 29 additions and 10 deletions

View File

@@ -33,7 +33,7 @@ using namespace Sketcher;
//---------- Geometry Extension
constexpr std::array<const char *,ExternalGeometryExtension::NumFlags> ExternalGeometryExtension::flag2str;
constexpr std::array<const char *, ISketchExternalGeometryExtension::NumFlags> ISketchExternalGeometryExtension::flag2str;
TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryExtension,Part::GeometryExtension)

View File

@@ -25,13 +25,13 @@
#include <Mod/Part/App/Geometry.h>
#include <array>
#include <bitset>
namespace Sketcher
{
class SketcherExport ExternalGeometryExtension : public Part::GeometryExtension
class ISketchExternalGeometryExtension
{
TYPESYSTEM_HEADER_WITH_OVERRIDE();
public:
// START_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) <realthunder.dev@gmail.com>
enum Flag {
@@ -46,6 +46,25 @@ public:
constexpr static std::array<const char *,NumFlags> flag2str {{ "Defining", "Frozen", "Detached","Missing", "Sync" }};
public:
// Identification information
// START_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) <realthunder.dev@gmail.com>
virtual bool testFlag(int flag) const = 0;
virtual void setFlag(int flag, bool v=true) = 0;
// END_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) <realthunder.dev@gmail.com>
virtual bool isClear() const = 0;
virtual size_t flagSize() const = 0;
virtual const std::string& getRef() const = 0;
virtual void setRef(const std::string & ref) = 0;
};
class SketcherExport ExternalGeometryExtension : public Part::GeometryExtension, public ISketchExternalGeometryExtension
{
TYPESYSTEM_HEADER_WITH_OVERRIDE();
public:
ExternalGeometryExtension() = default;
virtual ~ExternalGeometryExtension() override = default;
@@ -59,15 +78,15 @@ public:
virtual PyObject *getPyObject(void) override;
// START_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) <realthunder.dev@gmail.com>
bool testFlag(int flag) const { return Flags.test((size_t)(flag)); }
void setFlag(int flag, bool v=true) { Flags.set((size_t)(flag),v); }
virtual bool testFlag(int flag) const override { return Flags.test((size_t)(flag)); }
virtual void setFlag(int flag, bool v=true) override { Flags.set((size_t)(flag),v); }
// END_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) <realthunder.dev@gmail.com>
bool isClear() const {return Flags.none();}
size_t flagSize() const {return Flags.size();}
virtual bool isClear() const override {return Flags.none();}
virtual size_t flagSize() const override {return Flags.size();}
const std::string& getRef() const {return Ref;}
void setRef(const std::string & ref) {Ref = ref;}
virtual const std::string& getRef() const override {return Ref;}
virtual void setRef(const std::string & ref) override {Ref = ref;}
private:
ExternalGeometryExtension(const ExternalGeometryExtension&) = default;

View File

@@ -55,7 +55,7 @@ std::string ExternalGeometryExtensionPy::representation(void) const
bool first=true;
for(size_t i=0;i<ExternalGeometryExtension::NumFlags;i++) {
for(size_t i=0;i<ISketchExternalGeometryExtension::NumFlags;i++) {
if(getExternalGeometryExtensionPtr()->testFlag(i)) {
if(first) {
first=false;