Skip to content

Commit

Permalink
Sketcher: Separate ExternalGeometryExtension interface from class
Browse files Browse the repository at this point in the history
  • Loading branch information
abdullahtahiriyo committed Nov 3, 2020
1 parent 10102f4 commit 93dee6c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/Mod/Sketcher/App/ExternalGeometryExtension.cpp
Expand Up @@ -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)

Expand Down
35 changes: 27 additions & 8 deletions src/Mod/Sketcher/App/ExternalGeometryExtension.h
Expand Up @@ -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 {
Expand All @@ -46,6 +46,25 @@ class SketcherExport ExternalGeometryExtension : public Part::GeometryExtension

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;

Expand All @@ -59,15 +78,15 @@ class SketcherExport ExternalGeometryExtension : public Part::GeometryExtension
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;
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Sketcher/App/ExternalGeometryExtensionPyImp.cpp
Expand Up @@ -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;
Expand Down

0 comments on commit 93dee6c

Please sign in to comment.