diff --git a/src/App/Extension.h b/src/App/Extension.h index 4b1137ed3..903ebcb92 100644 --- a/src/App/Extension.h +++ b/src/App/Extension.h @@ -43,6 +43,16 @@ public: \ static void *create(void);\ private: \ static Base::Type classTypeId + +/// Like EXTENSION_TYPESYSTEM_HEADER, with getExtensionTypeId declared override +#define EXTENSION_TYPESYSTEM_HEADER_WITH_OVERRIDE() \ +public: \ + static Base::Type getExtensionClassTypeId(void); \ + virtual Base::Type getExtensionTypeId(void) const override; \ + static void init(void);\ + static void *create(void);\ +private: \ + static Base::Type classTypeId /// define to implement a subclass of Base::BaseClass #define EXTENSION_TYPESYSTEM_SOURCE_P(_class_) \ @@ -84,6 +94,15 @@ protected: \ private: \ static App::PropertyData propertyData +/// Like EXTENSION_PROPERTY_HEADER, but with override declarations. +#define EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(_class_) \ + EXTENSION_TYPESYSTEM_HEADER_WITH_OVERRIDE(); \ +protected: \ + static const App::PropertyData * extensionGetPropertyDataPtr(void); \ + virtual const App::PropertyData &extensionGetPropertyData(void) const override; \ +private: \ + static App::PropertyData propertyData + #define EXTENSION_PROPERTY_SOURCE(_class_, _parentclass_) \ EXTENSION_TYPESYSTEM_SOURCE_P(_class_);\ const App::PropertyData * _class_::extensionGetPropertyDataPtr(void){return &propertyData;} \ diff --git a/src/App/ExtensionContainer.h b/src/App/ExtensionContainer.h index 2c81784ae..e9ffa3aad 100644 --- a/src/App/ExtensionContainer.h +++ b/src/App/ExtensionContainer.h @@ -114,7 +114,7 @@ namespace App { class AppExport ExtensionContainer : public App::PropertyContainer { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: @@ -177,10 +177,10 @@ public: virtual const char* getPropertyDocumentation(const char *name) const override; //@} - virtual void onChanged(const Property*); + virtual void onChanged(const Property*) override; - virtual void Save(Base::Writer& writer) const; - virtual void Restore(Base::XMLReader& reader); + virtual void Save(Base::Writer& writer) const override; + virtual void Restore(Base::XMLReader& reader) override; //those methods save/restore the dynamic extenions without handling properties, which is something //done by the default Save/Restore methods. diff --git a/src/App/OriginGroupExtension.h b/src/App/OriginGroupExtension.h index 53938ade2..6b393c9c0 100644 --- a/src/App/OriginGroupExtension.h +++ b/src/App/OriginGroupExtension.h @@ -34,7 +34,7 @@ class Origin; */ class AppExport OriginGroupExtension : public App::GeoFeatureGroupExtension { - EXTENSION_PROPERTY_HEADER(App::OriginGroupExtension); + EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(App::OriginGroupExtension); public: OriginGroupExtension (); @@ -66,7 +66,7 @@ public: //changes all links of obj to a origin to point to this groupes origin void relinkToOrigin(App::DocumentObject* obj); - virtual void addObject(DocumentObject* obj); + virtual void addObject(DocumentObject* obj) override; protected: /// Checks integrity of the Origin diff --git a/src/App/PropertyContainer.h b/src/App/PropertyContainer.h index d315d452e..b1d67c495 100644 --- a/src/App/PropertyContainer.h +++ b/src/App/PropertyContainer.h @@ -230,6 +230,14 @@ protected: \ private: \ static App::PropertyData propertyData +/// Like PROPERTY_HEADER, but with overridden methods declared as such +#define PROPERTY_HEADER_WITH_OVERRIDE(_class_) \ + TYPESYSTEM_HEADER_WITH_OVERRIDE(); \ +protected: \ + static const App::PropertyData * getPropertyDataPtr(void); \ + virtual const App::PropertyData &getPropertyData(void) const override; \ +private: \ + static App::PropertyData propertyData /// #define PROPERTY_SOURCE(_class_, _parentclass_) \ TYPESYSTEM_SOURCE_P(_class_);\ diff --git a/src/Base/BaseClass.h b/src/Base/BaseClass.h index 7183d6b6b..cab16ed71 100644 --- a/src/Base/BaseClass.h +++ b/src/Base/BaseClass.h @@ -41,6 +41,15 @@ private: \ static Base::Type classTypeId +/// Like TYPESYSTEM_HEADER, but declare getTypeId as 'override' +#define TYPESYSTEM_HEADER_WITH_OVERRIDE() \ +public: \ + static Base::Type getClassTypeId(void); \ + virtual Base::Type getTypeId(void) const override; \ + static void init(void);\ + static void *create(void);\ +private: \ + static Base::Type classTypeId /// define to implement a subclass of Base::BaseClass diff --git a/src/Gui/ViewProviderGeoFeatureGroupExtension.h b/src/Gui/ViewProviderGeoFeatureGroupExtension.h index fc17992c8..c1ec41974 100644 --- a/src/Gui/ViewProviderGeoFeatureGroupExtension.h +++ b/src/Gui/ViewProviderGeoFeatureGroupExtension.h @@ -34,7 +34,7 @@ namespace Gui class GuiExport ViewProviderGeoFeatureGroupExtension : public ViewProviderGroupExtension { - EXTENSION_PROPERTY_HEADER(Gui::ViewProviderGeoFeatureGroupExtension); + EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(Gui::ViewProviderGeoFeatureGroupExtension); public: /// Constructor @@ -58,8 +58,8 @@ public: virtual void extensionUpdateData(const App::Property*) override; - virtual void extensionDropObject(App::DocumentObject*); - virtual void extensionDragObject(App::DocumentObject*); + virtual void extensionDropObject(App::DocumentObject*) override; + virtual void extensionDragObject(App::DocumentObject*) override; protected: SoGroup *pcGroupChildren; diff --git a/src/Gui/ViewProviderGroupExtension.h b/src/Gui/ViewProviderGroupExtension.h index 09800a1c4..635af005b 100644 --- a/src/Gui/ViewProviderGroupExtension.h +++ b/src/Gui/ViewProviderGroupExtension.h @@ -32,7 +32,7 @@ namespace Gui class GuiExport ViewProviderGroupExtension : public ViewProviderExtension { - EXTENSION_PROPERTY_HEADER(Gui::ViewProviderGroupExtension); + EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(Gui::ViewProviderGroupExtension); public: /// Constructor diff --git a/src/Gui/ViewProviderOriginGroupExtension.h b/src/Gui/ViewProviderOriginGroupExtension.h index 1d42bd26e..7a34a5187 100644 --- a/src/Gui/ViewProviderOriginGroupExtension.h +++ b/src/Gui/ViewProviderOriginGroupExtension.h @@ -33,7 +33,7 @@ namespace Gui class GuiExport ViewProviderOriginGroupExtension : public ViewProviderGeoFeatureGroupExtension { - EXTENSION_PROPERTY_HEADER(Gui::ViewProviderOriginGroupExtension); + EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(Gui::ViewProviderOriginGroupExtension); public: /// Constructor @@ -47,7 +47,7 @@ public: virtual void extensionUpdateData(const App::Property* prop) override; virtual void extensionDragObject(App::DocumentObject*) override; - virtual void extensionDropObject(App::DocumentObject*); + virtual void extensionDropObject(App::DocumentObject*) override; void updateOriginSize(); diff --git a/src/Mod/Part/App/FaceMaker.h b/src/Mod/Part/App/FaceMaker.h index d2d77915d..f264217e5 100644 --- a/src/Mod/Part/App/FaceMaker.h +++ b/src/Mod/Part/App/FaceMaker.h @@ -132,7 +132,7 @@ public: */ class PartExport FaceMakerSimple : public FaceMakerPublic { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: virtual std::string getUserFriendlyName() const override; virtual std::string getBriefExplanation() const override; diff --git a/src/Mod/Part/App/FaceMakerBullseye.h b/src/Mod/Part/App/FaceMakerBullseye.h index d2f8226ff..619c60d6f 100644 --- a/src/Mod/Part/App/FaceMakerBullseye.h +++ b/src/Mod/Part/App/FaceMakerBullseye.h @@ -44,7 +44,7 @@ namespace Part */ class PartExport FaceMakerBullseye: public FaceMakerPublic { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: FaceMakerBullseye() :planeSupplied(false){} diff --git a/src/Mod/Part/App/FaceMakerCheese.h b/src/Mod/Part/App/FaceMakerCheese.h index 0a0cdd342..36671f6eb 100644 --- a/src/Mod/Part/App/FaceMakerCheese.h +++ b/src/Mod/Part/App/FaceMakerCheese.h @@ -41,7 +41,7 @@ namespace Part */ class PartExport FaceMakerCheese: public FaceMakerPublic { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: virtual std::string getUserFriendlyName() const override; virtual std::string getBriefExplanation() const override; diff --git a/src/Mod/Part/App/FeatureExtrusion.h b/src/Mod/Part/App/FeatureExtrusion.h index d0026a216..fe6d510a1 100644 --- a/src/Mod/Part/App/FeatureExtrusion.h +++ b/src/Mod/Part/App/FeatureExtrusion.h @@ -35,7 +35,7 @@ namespace Part class PartExport Extrusion : public Part::Feature { - PROPERTY_HEADER(Part::Extrusion); + PROPERTY_HEADER_WITH_OVERRIDE(Part::Extrusion); public: Extrusion(); @@ -73,10 +73,10 @@ public: /** @name methods override feature */ //@{ /// recalculate the feature - App::DocumentObjectExecReturn *execute(void); - short mustExecute() const; + App::DocumentObjectExecReturn *execute(void) override; + short mustExecute() const override; /// returns the type name of the view provider - const char* getViewProviderName(void) const { + const char* getViewProviderName(void) const override { return "PartGui::ViewProviderExtrusion"; } //@} @@ -135,7 +135,7 @@ protected: */ class FaceMakerExtrusion: public FaceMakerCheese { - TYPESYSTEM_HEADER(); + TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: virtual std::string getUserFriendlyName() const override; virtual std::string getBriefExplanation() const override; diff --git a/src/Mod/Part/App/FeatureFace.h b/src/Mod/Part/App/FeatureFace.h index c2c1bdac2..dbbc6f08a 100644 --- a/src/Mod/Part/App/FeatureFace.h +++ b/src/Mod/Part/App/FeatureFace.h @@ -31,7 +31,7 @@ namespace Part class PartExport Face : public Part::Feature { - PROPERTY_HEADER(Part::Face); + PROPERTY_HEADER_WITH_OVERRIDE(Part::Face); public: Face(); @@ -42,10 +42,10 @@ public: /** @name methods override feature */ //@{ /// recalculate the feature - App::DocumentObjectExecReturn *execute(void); - short mustExecute() const; + App::DocumentObjectExecReturn *execute(void) override; + short mustExecute() const override; /// returns the type name of the ViewProvider - const char* getViewProviderName(void) const { + const char* getViewProviderName(void) const override { return "PartGui::ViewProviderFace"; } void setupObject() override; diff --git a/src/Mod/Part/App/FeatureOffset.h b/src/Mod/Part/App/FeatureOffset.h index b00fcdd31..57e945ba9 100644 --- a/src/Mod/Part/App/FeatureOffset.h +++ b/src/Mod/Part/App/FeatureOffset.h @@ -32,7 +32,7 @@ namespace Part class PartExport Offset : public Part::Feature { - PROPERTY_HEADER(Part::Offset); + PROPERTY_HEADER_WITH_OVERRIDE(Part::Offset); public: Offset(); @@ -63,7 +63,7 @@ private: class PartExport Offset2D : public Offset { - PROPERTY_HEADER(Part::Offset2D); + PROPERTY_HEADER_WITH_OVERRIDE(Part::Offset2D); public: Offset2D(); ~Offset2D(); diff --git a/src/Mod/Part/App/FeatureRevolution.h b/src/Mod/Part/App/FeatureRevolution.h index b75958960..a2257ef92 100644 --- a/src/Mod/Part/App/FeatureRevolution.h +++ b/src/Mod/Part/App/FeatureRevolution.h @@ -33,7 +33,7 @@ namespace Part class PartExport Revolution : public Part::Feature { - PROPERTY_HEADER(Part::Revolution); + PROPERTY_HEADER_WITH_OVERRIDE(Part::Revolution); public: Revolution(); @@ -50,13 +50,13 @@ public: /** @name methods override feature */ //@{ /// recalculate the feature - App::DocumentObjectExecReturn *execute(void); - short mustExecute() const; + App::DocumentObjectExecReturn *execute(void) override; + short mustExecute() const override; void onChanged(const App::Property* prop) override; /// returns the type name of the view provider - const char* getViewProviderName(void) const { + const char* getViewProviderName(void) const override{ return "PartGui::ViewProviderRevolution"; } //@} @@ -82,7 +82,7 @@ private: static App::PropertyFloatConstraint::Constraints angleRangeU; protected: - virtual void setupObject(); + virtual void setupObject() override; }; } //namespace Part diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index d5fc3d9db..221506a06 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -87,7 +87,7 @@ private Q_SLOTS: void visibilityAutomation(bool opening_not_closing); protected: - void changeEvent(QEvent *e); + void changeEvent(QEvent *e) override; private: void objectDeleted(const Gui::ViewProviderDocumentObject&); void onSelectionChanged(const Gui::SelectionChanges& msg) override; diff --git a/src/Mod/PartDesign/App/Body.h b/src/Mod/PartDesign/App/Body.h index a73ab7003..1e6956dee 100644 --- a/src/Mod/PartDesign/App/Body.h +++ b/src/Mod/PartDesign/App/Body.h @@ -40,7 +40,7 @@ class Feature; class PartDesignExport Body : public Part::BodyBase { - PROPERTY_HEADER(PartDesign::Body); + PROPERTY_HEADER_WITH_OVERRIDE(PartDesign::Body); public: @@ -52,11 +52,11 @@ public: /** @name methods override feature */ //@{ /// recalculate the feature - App::DocumentObjectExecReturn *execute(void); - short mustExecute() const; + App::DocumentObjectExecReturn *execute(void) override; + short mustExecute() const override; /// returns the type name of the view provider - const char* getViewProviderName(void) const { + const char* getViewProviderName(void) const override { return "PartDesignGui::ViewProviderBody"; } //@} @@ -107,7 +107,7 @@ public: * all features derived from PartDesign::Feature and Part::Datum and sketches */ static bool isAllowed(const App::DocumentObject* f); - virtual bool allowObject(DocumentObject* f) {return isAllowed(f);}; + virtual bool allowObject(DocumentObject* f) override {return isAllowed(f);}; /** * Return the body which this feature belongs too, or NULL @@ -115,14 +115,14 @@ public: */ static Body *findBodyOf(const App::DocumentObject* feature); - PyObject *getPyObject(void); + PyObject *getPyObject(void) override; protected: - virtual void onSettingDocument(); + virtual void onSettingDocument() override; /// Adjusts the first solid's feature's base on on BaseFeature getting setted - virtual void onChanged (const App::Property* prop); + virtual void onChanged (const App::Property* prop) override; /** * Return the solid feature before the given feature, or before the Tip feature @@ -137,9 +137,9 @@ protected: App::DocumentObject *getNextSolidFeature(App::DocumentObject* start = NULL); /// Creates the corresponding Origin object - virtual void setupObject (); + virtual void setupObject () override; /// Removes all planes and axis if they are still linked to the document - virtual void unsetupObject (); + virtual void unsetupObject () override; private: boost::signals::scoped_connection connection; diff --git a/src/Mod/TechDraw/App/DrawProjGroup.h b/src/Mod/TechDraw/App/DrawProjGroup.h index 10d32ac0d..391f47bc4 100644 --- a/src/Mod/TechDraw/App/DrawProjGroup.h +++ b/src/Mod/TechDraw/App/DrawProjGroup.h @@ -47,7 +47,7 @@ class Cube; */ class TechDrawExport DrawProjGroup : public TechDraw::DrawViewCollection { - PROPERTY_HEADER(TechDraw::DrawProjGroup); + PROPERTY_HEADER_WITH_OVERRIDE(TechDraw::DrawProjGroup); public: /// Constructor @@ -66,7 +66,7 @@ public: Base::BoundBox3d getBoundingBox() const; double calculateAutomaticScale() const; - virtual QRectF getRect(void) const; + virtual QRectF getRect(void) const override; virtual bool checkFit(TechDraw::DrawPage* p) const override; /// Check if container has a view of a specific type bool hasProjection(const char *viewProjType) const; @@ -91,20 +91,20 @@ public: bool distributeProjections(void); void resetPositions(void); - short mustExecute() const; + short mustExecute() const override; /** @name methods overide Feature */ //@{ /// recalculate the Feature - virtual void onDocumentRestored(); - virtual App::DocumentObjectExecReturn *execute(void); + virtual void onDocumentRestored() override; + virtual App::DocumentObjectExecReturn *execute(void) override; //@} /// returns the type name of the ViewProvider - virtual const char* getViewProviderName(void) const { + virtual const char* getViewProviderName(void) const override { return "TechDrawGui::ViewProviderProjGroup"; } //return PyObject as DrawProjGroupPy - virtual PyObject *getPyObject(void); + virtual PyObject *getPyObject(void) override; /// Determines either "First Angle" or "Third Angle". App::Enumeration usedProjectionType(void); @@ -132,7 +132,7 @@ public: void dumpISO(char * title); protected: - void onChanged(const App::Property* prop); + void onChanged(const App::Property* prop) override; //! Moves anchor view to keep our bounding box centre on the origin void moveToCentre(); diff --git a/src/Mod/TechDraw/App/DrawProjGroupItem.h b/src/Mod/TechDraw/App/DrawProjGroupItem.h index 8916594dd..96d32f4ee 100644 --- a/src/Mod/TechDraw/App/DrawProjGroupItem.h +++ b/src/Mod/TechDraw/App/DrawProjGroupItem.h @@ -48,7 +48,7 @@ class DrawProjGroup; class TechDrawExport DrawProjGroupItem : public TechDraw::DrawViewPart { - PROPERTY_HEADER(TechDraw::DrawProjGroupItem); + PROPERTY_HEADER_WITH_OVERRIDE(TechDraw::DrawProjGroupItem); public: /// Constructor @@ -58,26 +58,26 @@ public: App::PropertyEnumeration Type; App::PropertyVector RotationVector; - short mustExecute() const; - virtual void onDocumentRestored(); - virtual void unsetupObject(); + short mustExecute() const override; + virtual void onDocumentRestored() override; + virtual void unsetupObject() override; DrawProjGroup* getGroup(void) const; double getRotateAngle(); /// returns the type name of the ViewProvider - virtual const char* getViewProviderName(void) const { + virtual const char* getViewProviderName(void) const override { return "TechDrawGui::ViewProviderProjGroupItem"; } //return PyObject as DrawProjGroupItemPy - virtual PyObject *getPyObject(void); + virtual PyObject *getPyObject(void) override; virtual gp_Ax2 getViewAxis(const Base::Vector3d& pt, const Base::Vector3d& direction, const bool flip=true) const override; protected: - void onChanged(const App::Property* prop); + void onChanged(const App::Property* prop) override; private: static const char* TypeEnums[]; diff --git a/src/Mod/TechDraw/App/DrawViewSymbol.h b/src/Mod/TechDraw/App/DrawViewSymbol.h index da7e049c2..73b2fbc39 100644 --- a/src/Mod/TechDraw/App/DrawViewSymbol.h +++ b/src/Mod/TechDraw/App/DrawViewSymbol.h @@ -37,7 +37,7 @@ class DrawPage; class TechDrawExport DrawViewSymbol : public TechDraw::DrawView { - PROPERTY_HEADER(TechDraw::DrawViewSymbol); + PROPERTY_HEADER_WITH_OVERRIDE(TechDraw::DrawViewSymbol); public: /// Constructor @@ -50,19 +50,19 @@ public: /** @name methods overide Feature */ //@{ /// recalculate the Feature - virtual App::DocumentObjectExecReturn *execute(void); + virtual App::DocumentObjectExecReturn *execute(void) override; //@} /// returns the type name of the ViewProvider - virtual const char* getViewProviderName(void) const { + virtual const char* getViewProviderName(void) const override { return "TechDrawGui::ViewProviderSymbol"; } - virtual QRectF getRect() const; + virtual QRectF getRect() const override; virtual bool checkFit(TechDraw::DrawPage* p) const override; protected: - virtual void onChanged(const App::Property* prop); + virtual void onChanged(const App::Property* prop) override; Base::BoundBox3d bbox; }; diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.h b/src/Mod/TechDraw/Gui/QGIViewDimension.h index 065895989..dbcc5ce5f 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.h +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.h @@ -94,12 +94,14 @@ public: ~QGIViewDimension() = default; void setViewPartFeature(TechDraw::DrawViewDimension *obj); - int type() const { return Type;} + int type() const override { return Type;} - virtual void drawBorder(); + virtual void drawBorder() override; virtual void updateView(bool update = false) override; - virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ); - virtual QColor getNormalColor(void); + virtual void paint( QPainter * painter, + const QStyleOptionGraphicsItem * option, + QWidget * widget = 0 ) override; + virtual QColor getNormalColor(void) override; public Q_SLOTS: void datumLabelDragged(void); @@ -109,8 +111,9 @@ public Q_SLOTS: void updateDim(void); protected: - void draw(); - virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); + void draw() override; + virtual QVariant itemChange( GraphicsItemChange change, + const QVariant &value ) override; virtual void setSvgPens(void); virtual void setPens(void);