diff --git a/src/libs/fervor/fvavailableupdate.h b/src/libs/fervor/fvavailableupdate.h index 6217ba401..943bc6003 100644 --- a/src/libs/fervor/fvavailableupdate.h +++ b/src/libs/fervor/fvavailableupdate.h @@ -28,7 +28,7 @@ #include #include -class FvAvailableUpdate : public QObject +class FvAvailableUpdate final : public QObject { Q_OBJECT public: diff --git a/src/libs/fervor/fvupdater.h b/src/libs/fervor/fvupdater.h index 0cfa26385..340bd0658 100644 --- a/src/libs/fervor/fvupdater.h +++ b/src/libs/fervor/fvupdater.h @@ -35,7 +35,7 @@ #include "fvavailableupdate.h" #include "fvupdatewindow.h" -class FvUpdater : public QObject +class FvUpdater final : public QObject { Q_OBJECT diff --git a/src/libs/ifc/exception/vexceptionbadid.h b/src/libs/ifc/exception/vexceptionbadid.h index 4c130a6d2..ab73804d7 100644 --- a/src/libs/ifc/exception/vexceptionbadid.h +++ b/src/libs/ifc/exception/vexceptionbadid.h @@ -39,7 +39,7 @@ /** * @brief The VExceptionBadId class for exception bad id */ -class VExceptionBadId : public VException +class VExceptionBadId final : public VException { public: VExceptionBadId(const QString &error, const quint32 &id) V_NOEXCEPT_EXPR (true); diff --git a/src/libs/ifc/exception/vexceptionconversionerror.h b/src/libs/ifc/exception/vexceptionconversionerror.h index 7f604278f..e44427189 100644 --- a/src/libs/ifc/exception/vexceptionconversionerror.h +++ b/src/libs/ifc/exception/vexceptionconversionerror.h @@ -38,7 +38,7 @@ /** * @brief The VExceptionConversionError class for exception of conversion error */ -class VExceptionConversionError : public VException +class VExceptionConversionError final : public VException { public: VExceptionConversionError(const QString &error, const QString &str) V_NOEXCEPT_EXPR (true); diff --git a/src/libs/ifc/exception/vexceptionemptyparameter.h b/src/libs/ifc/exception/vexceptionemptyparameter.h index 70942a1df..36820e692 100644 --- a/src/libs/ifc/exception/vexceptionemptyparameter.h +++ b/src/libs/ifc/exception/vexceptionemptyparameter.h @@ -41,7 +41,7 @@ class QDomElement; /** * @brief The VExceptionEmptyParameter class for exception empty parameter */ -class VExceptionEmptyParameter : public VException +class VExceptionEmptyParameter final : public VException { public: VExceptionEmptyParameter(const QString &what, const QString &name, diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index 7d2c3b92a..43a1deb94 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -43,7 +43,7 @@ class QDomElement; -class VPatternConverter : public VAbstractConverter +class VPatternConverter final : public VAbstractConverter { Q_DECLARE_TR_FUNCTIONS(VPatternConverter) public: diff --git a/src/libs/ifc/xml/vvitconverter.h b/src/libs/ifc/xml/vvitconverter.h index 28627c30f..dc231e3cd 100644 --- a/src/libs/ifc/xml/vvitconverter.h +++ b/src/libs/ifc/xml/vvitconverter.h @@ -39,7 +39,7 @@ class QDomElement; -class VVITConverter : public VAbstractMConverter +class VVITConverter final : public VAbstractMConverter { Q_DECLARE_TR_FUNCTIONS(VVITConverter) public: diff --git a/src/libs/ifc/xml/vvstconverter.h b/src/libs/ifc/xml/vvstconverter.h index 1bab8bcb1..a4eea6bca 100644 --- a/src/libs/ifc/xml/vvstconverter.h +++ b/src/libs/ifc/xml/vvstconverter.h @@ -39,7 +39,7 @@ class QDomElement; -class VVSTConverter : public VAbstractMConverter +class VVSTConverter final : public VAbstractMConverter { Q_DECLARE_TR_FUNCTIONS(VVSTConverter) public: diff --git a/src/libs/ifc/xml/vwatermarkconverter.h b/src/libs/ifc/xml/vwatermarkconverter.h index f5ccba165..d982a83c7 100644 --- a/src/libs/ifc/xml/vwatermarkconverter.h +++ b/src/libs/ifc/xml/vwatermarkconverter.h @@ -30,7 +30,7 @@ #include "vabstractconverter.h" -class VWatermarkConverter : public VAbstractConverter +class VWatermarkConverter final : public VAbstractConverter { public: explicit VWatermarkConverter(const QString &fileName); diff --git a/src/libs/qmuparser/qmudef.h b/src/libs/qmuparser/qmudef.h index 508ad6eb7..a5ea2e722 100644 --- a/src/libs/qmuparser/qmudef.h +++ b/src/libs/qmuparser/qmudef.h @@ -113,6 +113,56 @@ QMUPARSERSHARED_EXPORT QString NameRegExp(); QT_WARNING_POP +#ifndef QMU_ATTRIBUTE_UNUSED +# if defined(Q_CC_GNU) || defined(Q_CC_CLANG) +# define QMU_ATTRIBUTE_UNUSED [[gnu::unused]] +#elif defined(Q_CC_MSVC) +# define QMU_ATTRIBUTE_UNUSED __declspec(unused) +# else +# define QMU_ATTRIBUTE_UNUSED +# endif +#endif + +// Example of use +//class Base +//{ +// virtual ~Base() +// { +// } + +// virtual int a(float f) +// { +// } +// virtual void b(double) +// { +// } +//}; + +//QMU_MARK_NONFINAL_CLASS(Base) +//QMU_ATTRIBUTE_UNUSED(Base, int, a(float)) +//QMU_ATTRIBUTE_UNUSED(Base, void, b(double) + +#ifndef QMU_MARK_NONFINAL_CLASS +#define QMU_MARK_NONFINAL_CLASS(base) \ + namespace qmu_void_namespace_for_class_##base \ + { \ + struct QMU_ATTRIBUTE_UNUSED temp_marker final : base \ + { \ + }; \ + } +#endif + +#ifndef QMU_MARK_NONFINAL_METHOD +#define QMU_MARK_NONFINAL_METHOD(base, return_type, method) \ + namespace qmu_void_namespace_for_class_##base##_methos_##method \ + { \ + struct QMU_ATTRIBUTE_UNUSED temp_marker final : base \ + { \ + inline return_type QMU_ATTRIBUTE_UNUSED method override {} \ + }; \ + } +#endif + Q_REQUIRED_RESULT static inline bool QmuFuzzyComparePossibleNulls(double p1, double p2); static inline bool QmuFuzzyComparePossibleNulls(double p1, double p2) { diff --git a/src/libs/qmuparser/qmuparser.h b/src/libs/qmuparser/qmuparser.h index 9c71e1ff4..309701c46 100644 --- a/src/libs/qmuparser/qmuparser.h +++ b/src/libs/qmuparser/qmuparser.h @@ -99,6 +99,8 @@ namespace qmu static qreal Max(const qreal*, int); // maximum }; + QMU_MARK_NONFINAL_CLASS(QmuParser) + //--------------------------------------------------------------------------------------------------------------------- /** * @brief Callback for the unary minus operator. diff --git a/src/libs/qmuparser/qmuparsercallback_p.h b/src/libs/qmuparser/qmuparsercallback_p.h index e84dc3612..7fa5f9132 100644 --- a/src/libs/qmuparser/qmuparsercallback_p.h +++ b/src/libs/qmuparser/qmuparsercallback_p.h @@ -37,7 +37,7 @@ QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") namespace qmu { -class QmuParserCallbackData : public QSharedData +class QmuParserCallbackData final : public QSharedData { public: QmuParserCallbackData(); diff --git a/src/libs/qmuparser/qmutokenparser.h b/src/libs/qmuparser/qmutokenparser.h index 407138d91..15c6a125b 100644 --- a/src/libs/qmuparser/qmutokenparser.h +++ b/src/libs/qmuparser/qmutokenparser.h @@ -50,6 +50,8 @@ private: QmuTokenParser(); }; +QMU_MARK_NONFINAL_CLASS(QmuTokenParser) + } // namespace qmu #endif // QMUTOKENPARSER_H diff --git a/src/libs/vdxf/dxiface.h b/src/libs/vdxf/dxiface.h index 212e5bd72..f6b3d05ef 100644 --- a/src/libs/vdxf/dxiface.h +++ b/src/libs/vdxf/dxiface.h @@ -93,7 +93,7 @@ private: }; -class dx_iface : public DRW_Interface +class dx_iface final : public DRW_Interface { public: dx_iface(const std::string& file, DRW::Version v, VarMeasurement varMeasurement, VarInsunits varInsunits); diff --git a/src/libs/vdxf/libdxfrw/drw_entities.h b/src/libs/vdxf/libdxfrw/drw_entities.h index 667007d2a..fe166760f 100644 --- a/src/libs/vdxf/libdxfrw/drw_entities.h +++ b/src/libs/vdxf/libdxfrw/drw_entities.h @@ -761,7 +761,7 @@ private: * Class to handle vertex for polyline entity * @author Rallaz */ -class DRW_Vertex : public DRW_Point { +class DRW_Vertex final : public DRW_Point { SETENTFRIENDS public: DRW_Vertex() diff --git a/src/libs/vdxf/libdxfrw/intern/dxfreader.h b/src/libs/vdxf/libdxfrw/intern/dxfreader.h index 3593b018f..ec161313a 100644 --- a/src/libs/vdxf/libdxfrw/intern/dxfreader.h +++ b/src/libs/vdxf/libdxfrw/intern/dxfreader.h @@ -93,7 +93,7 @@ public: virtual bool readBool() override; }; -class dxfReaderAscii : public dxfReader { +class dxfReaderAscii final : public dxfReader { public: explicit dxfReaderAscii(std::istream *stream) : dxfReader(stream) diff --git a/src/libs/vdxf/libdxfrw/intern/dxfwriter.h b/src/libs/vdxf/libdxfrw/intern/dxfwriter.h index 831d88358..81cb8902d 100644 --- a/src/libs/vdxf/libdxfrw/intern/dxfwriter.h +++ b/src/libs/vdxf/libdxfrw/intern/dxfwriter.h @@ -56,7 +56,7 @@ public: virtual bool writeBool(int code, bool data) override; }; -class dxfWriterAscii : public dxfWriter { +class dxfWriterAscii final : public dxfWriter { public: explicit dxfWriterAscii(std::ofstream *stream); virtual ~dxfWriterAscii() = default; diff --git a/src/libs/vdxf/vdxfengine.h b/src/libs/vdxf/vdxfengine.h index 623698e8c..73c1ba996 100644 --- a/src/libs/vdxf/vdxfengine.h +++ b/src/libs/vdxf/vdxfengine.h @@ -50,7 +50,7 @@ class VLayoutPiece; class DRW_Entity; class dx_ifaceBlock; -class VDxfEngine : public QPaintEngine +class VDxfEngine final : public QPaintEngine { friend class VDxfPaintDevice; public: diff --git a/src/libs/vgeometry/vabstractcurve_p.h b/src/libs/vgeometry/vabstractcurve_p.h index 863f880f9..4fe8c2954 100644 --- a/src/libs/vgeometry/vabstractcurve_p.h +++ b/src/libs/vgeometry/vabstractcurve_p.h @@ -38,7 +38,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VAbstractCurveData : public QSharedData +class VAbstractCurveData final : public QSharedData { public: diff --git a/src/libs/vgeometry/varc_p.h b/src/libs/vgeometry/varc_p.h index 16feb40ea..25045ef5d 100644 --- a/src/libs/vgeometry/varc_p.h +++ b/src/libs/vgeometry/varc_p.h @@ -38,7 +38,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VArcData : public QSharedData +class VArcData final : public QSharedData { public: VArcData(); diff --git a/src/libs/vgeometry/vellipticalarc.h b/src/libs/vgeometry/vellipticalarc.h index 088a1c261..b5eeeec5b 100644 --- a/src/libs/vgeometry/vellipticalarc.h +++ b/src/libs/vgeometry/vellipticalarc.h @@ -44,7 +44,7 @@ class VEllipticalArcData; -class VEllipticalArc : public VAbstractArc +class VEllipticalArc final : public VAbstractArc { Q_DECLARE_TR_FUNCTIONS(VEllipticalArc) public: diff --git a/src/libs/vgeometry/vellipticalarc_p.h b/src/libs/vgeometry/vellipticalarc_p.h index 6d9bf57ae..706591cc7 100644 --- a/src/libs/vgeometry/vellipticalarc_p.h +++ b/src/libs/vgeometry/vellipticalarc_p.h @@ -10,7 +10,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VEllipticalArcData : public QSharedData +class VEllipticalArcData final : public QSharedData { public: VEllipticalArcData (); diff --git a/src/libs/vgeometry/vgobject_p.h b/src/libs/vgeometry/vgobject_p.h index 963956e87..42954b1bd 100644 --- a/src/libs/vgeometry/vgobject_p.h +++ b/src/libs/vgeometry/vgobject_p.h @@ -38,7 +38,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VGObjectData : public QSharedData +class VGObjectData final : public QSharedData { public: VGObjectData() diff --git a/src/libs/vgeometry/vpointf.h b/src/libs/vgeometry/vpointf.h index 4381b2f2d..a6db22f21 100644 --- a/src/libs/vgeometry/vpointf.h +++ b/src/libs/vgeometry/vpointf.h @@ -97,6 +97,7 @@ private: Q_DECLARE_METATYPE(VPointF) Q_DECLARE_TYPEINFO(VPointF, Q_MOVABLE_TYPE); +V_MARK_NONFINAL_CLASS(VPointF) QT_WARNING_POP diff --git a/src/libs/vgeometry/vpointf_p.h b/src/libs/vgeometry/vpointf_p.h index 4a82bb920..26ad6dc57 100644 --- a/src/libs/vgeometry/vpointf_p.h +++ b/src/libs/vgeometry/vpointf_p.h @@ -38,7 +38,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VPointFData : public QSharedData +class VPointFData final : public QSharedData { public: diff --git a/src/libs/vgeometry/vspline_p.h b/src/libs/vgeometry/vspline_p.h index 63ca2e9b0..3c73ffb0e 100644 --- a/src/libs/vgeometry/vspline_p.h +++ b/src/libs/vgeometry/vspline_p.h @@ -40,7 +40,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VSplineData : public QSharedData +class VSplineData final : public QSharedData { public: VSplineData(); diff --git a/src/libs/vgeometry/vsplinepath_p.h b/src/libs/vgeometry/vsplinepath_p.h index 245ecd35b..84f89038e 100644 --- a/src/libs/vgeometry/vsplinepath_p.h +++ b/src/libs/vgeometry/vsplinepath_p.h @@ -36,7 +36,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VSplinePathData : public QSharedData +class VSplinePathData final : public QSharedData { public: diff --git a/src/libs/vgeometry/vsplinepoint_p.h b/src/libs/vgeometry/vsplinepoint_p.h index 0d6e98e27..0e14ec87c 100644 --- a/src/libs/vgeometry/vsplinepoint_p.h +++ b/src/libs/vgeometry/vsplinepoint_p.h @@ -41,7 +41,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VFSplinePointData : public QSharedData +class VFSplinePointData final : public QSharedData { public: @@ -101,7 +101,7 @@ VFSplinePointData::~VFSplinePointData() //--------------------------------------VSplinePointData--------------------------------------------------------------- -class VSplinePointData : public QSharedData +class VSplinePointData final : public QSharedData { public: VSplinePointData() diff --git a/src/libs/vlayout/dialogs/dialoglayoutscale.h b/src/libs/vlayout/dialogs/dialoglayoutscale.h index 757f9c6e6..dc99ad49c 100644 --- a/src/libs/vlayout/dialogs/dialoglayoutscale.h +++ b/src/libs/vlayout/dialogs/dialoglayoutscale.h @@ -35,7 +35,7 @@ namespace Ui class DialogLayoutScale; } -class DialogLayoutScale : public QDialog +class DialogLayoutScale final : public QDialog { Q_OBJECT diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index f4be0b8b5..6653b086d 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -354,6 +354,56 @@ if (!(cond)) \ #endif // defined(__cplusplus) #endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0) +#ifndef V_ATTRIBUTE_UNUSED +# if defined(Q_CC_GNU) || defined(Q_CC_CLANG) +# define V_ATTRIBUTE_UNUSED [[gnu::unused]] +#elif defined(Q_CC_MSVC) +# define V_ATTRIBUTE_UNUSED __declspec(unused) +# else +# define V_ATTRIBUTE_UNUSED +# endif +#endif + +// Example of use +//class Base +//{ +// virtual ~Base() +// { +// } + +// virtual int a(float f) +// { +// } +// virtual void b(double) +// { +// } +//}; + +//V_MARK_NONFINAL_CLASS(Base) +//V_ATTRIBUTE_UNUSED(Base, int, a(float)) +//V_ATTRIBUTE_UNUSED(Base, void, b(double) + +#ifndef V_MARK_NONFINAL_CLASS +#define V_MARK_NONFINAL_CLASS(base) \ + namespace v_void_namespace_for_class_##base \ + { \ + struct V_ATTRIBUTE_UNUSED temp_marker final : base \ + { \ + }; \ + } +#endif + +#ifndef V_MARK_NONFINAL_METHOD +#define V_MARK_NONFINAL_METHOD(base, return_type, method) \ + namespace v_void_namespace_for_class_##base##_methos_##method \ + { \ + struct V_ATTRIBUTE_UNUSED temp_marker final : base \ + { \ + inline return_type V_ATTRIBUTE_UNUSED method override {} \ + }; \ + } +#endif + bool IsOptionSet(int argc, char *argv[], const char *option); void InitHighDpiScaling(int argc, char *argv[]); diff --git a/src/libs/vmisc/qxtcsvmodel.h b/src/libs/vmisc/qxtcsvmodel.h index 6abb0526a..e40bc6fda 100644 --- a/src/libs/vmisc/qxtcsvmodel.h +++ b/src/libs/vmisc/qxtcsvmodel.h @@ -50,7 +50,7 @@ class QxtCsvModelPrivate; -class QxtCsvModel : public QAbstractTableModel +class QxtCsvModel final : public QAbstractTableModel { Q_OBJECT public: diff --git a/src/libs/vmisc/testvapplication.h b/src/libs/vmisc/testvapplication.h index d9fdae99f..635ac801c 100644 --- a/src/libs/vmisc/testvapplication.h +++ b/src/libs/vmisc/testvapplication.h @@ -45,7 +45,7 @@ public: } }; -class TestVApplication : public VAbstractValApplication +class TestVApplication final : public VAbstractValApplication { Q_OBJECT public: diff --git a/src/libs/vmisc/vabstractapplication.h b/src/libs/vmisc/vabstractapplication.h index 9ee262655..c9372bad3 100644 --- a/src/libs/vmisc/vabstractapplication.h +++ b/src/libs/vmisc/vabstractapplication.h @@ -49,6 +49,9 @@ class QUndoStack; class VAbstractApplication;// use in define class VCommonSettings; +QT_WARNING_PUSH +QT_WARNING_DISABLE_GCC("-Wsuggest-final-types") + class VAbstractApplication : public QApplication { Q_OBJECT @@ -111,6 +114,8 @@ private: void ClearTranslation(); }; +QT_WARNING_POP + //--------------------------------------------------------------------------------------------------------------------- template inline QString VAbstractApplication::LocaleToString(const T &value) diff --git a/src/libs/vobj/vobjengine.h b/src/libs/vobj/vobjengine.h index d4cbad999..039aa81e7 100644 --- a/src/libs/vobj/vobjengine.h +++ b/src/libs/vobj/vobjengine.h @@ -44,7 +44,7 @@ class QTextStream; #define MAX_POINTS 512 -class VObjEngine : public QPaintEngine +class VObjEngine final : public QPaintEngine { public: VObjEngine(); diff --git a/src/libs/vpatterndb/variables/vcurveangle.h b/src/libs/vpatterndb/variables/vcurveangle.h index e624eaa7d..dd451b5df 100644 --- a/src/libs/vpatterndb/variables/vcurveangle.h +++ b/src/libs/vpatterndb/variables/vcurveangle.h @@ -52,7 +52,7 @@ protected: VCurveAngle(const quint32 &id, const quint32 &parentId); }; -class VEllipticalArcRotation : public VCurveAngle +class VEllipticalArcRotation final : public VCurveAngle { public: VEllipticalArcRotation(); diff --git a/src/libs/vpatterndb/variables/vcurveclength.h b/src/libs/vpatterndb/variables/vcurveclength.h index 3978d2596..4e9c250df 100644 --- a/src/libs/vpatterndb/variables/vcurveclength.h +++ b/src/libs/vpatterndb/variables/vcurveclength.h @@ -40,7 +40,7 @@ enum class CurveCLength : qint8 { C1, C2 }; class VAbstractBezier; class VSpline; -class VCurveCLength : public VCurveVariable +class VCurveCLength final : public VCurveVariable { public: VCurveCLength(); diff --git a/src/libs/vpatterndb/variables/vcurvelength.h b/src/libs/vpatterndb/variables/vcurvelength.h index c45403261..df623896c 100644 --- a/src/libs/vpatterndb/variables/vcurvelength.h +++ b/src/libs/vpatterndb/variables/vcurvelength.h @@ -40,7 +40,7 @@ class VAbstractCurve; class VSpline; -class VCurveLength : public VCurveVariable +class VCurveLength final : public VCurveVariable { public: VCurveLength(); diff --git a/src/libs/vpatterndb/variables/vcurvevariable_p.h b/src/libs/vpatterndb/variables/vcurvevariable_p.h index d0ab9f480..5560cf62b 100644 --- a/src/libs/vpatterndb/variables/vcurvevariable_p.h +++ b/src/libs/vpatterndb/variables/vcurvevariable_p.h @@ -40,7 +40,7 @@ QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") // cppcheck-suppress copyCtorAndEqOperator -class VCurveVariableData : public QSharedData +class VCurveVariableData final : public QSharedData { public: diff --git a/src/libs/vpatterndb/variables/vincrement_p.h b/src/libs/vpatterndb/variables/vincrement_p.h index e743ae6bc..cc07f5323 100644 --- a/src/libs/vpatterndb/variables/vincrement_p.h +++ b/src/libs/vpatterndb/variables/vincrement_p.h @@ -39,7 +39,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VIncrementData : public QSharedData +class VIncrementData final : public QSharedData { public: diff --git a/src/libs/vpatterndb/variables/vinternalvariable_p.h b/src/libs/vpatterndb/variables/vinternalvariable_p.h index 0ef0b61e8..56889a204 100644 --- a/src/libs/vpatterndb/variables/vinternalvariable_p.h +++ b/src/libs/vpatterndb/variables/vinternalvariable_p.h @@ -39,7 +39,7 @@ QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") // cppcheck-suppress copyCtorAndEqOperator -class VInternalVariableData : public QSharedData +class VInternalVariableData final : public QSharedData { public: VInternalVariableData() diff --git a/src/libs/vpatterndb/variables/vlineangle_p.h b/src/libs/vpatterndb/variables/vlineangle_p.h index e28f7d151..2adf4f2d4 100644 --- a/src/libs/vpatterndb/variables/vlineangle_p.h +++ b/src/libs/vpatterndb/variables/vlineangle_p.h @@ -40,7 +40,7 @@ QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") // cppcheck-suppress copyCtorAndEqOperator -class VLineAngleData : public QSharedData +class VLineAngleData final : public QSharedData { public: diff --git a/src/libs/vpatterndb/variables/vlinelength_p.h b/src/libs/vpatterndb/variables/vlinelength_p.h index 63390cc76..d3726c1be 100644 --- a/src/libs/vpatterndb/variables/vlinelength_p.h +++ b/src/libs/vpatterndb/variables/vlinelength_p.h @@ -40,7 +40,7 @@ QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") // cppcheck-suppress copyCtorAndEqOperator -class VLengthLineData : public QSharedData +class VLengthLineData final : public QSharedData { public: diff --git a/src/libs/vpatterndb/variables/vmeasurement_p.h b/src/libs/vpatterndb/variables/vmeasurement_p.h index 132360f74..dff7ae096 100644 --- a/src/libs/vpatterndb/variables/vmeasurement_p.h +++ b/src/libs/vpatterndb/variables/vmeasurement_p.h @@ -38,7 +38,7 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VMeasurementData : public QSharedData +class VMeasurementData final : public QSharedData { public: diff --git a/src/libs/vpatterndb/variables/vvariable_p.h b/src/libs/vpatterndb/variables/vvariable_p.h index 6fcb6c120..c9457e444 100644 --- a/src/libs/vpatterndb/variables/vvariable_p.h +++ b/src/libs/vpatterndb/variables/vvariable_p.h @@ -39,7 +39,7 @@ QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") // cppcheck-suppress copyCtorAndEqOperator -class VVariableData : public QSharedData +class VVariableData final : public QSharedData { public: diff --git a/src/libs/vpatterndb/vcontainer.h b/src/libs/vpatterndb/vcontainer.h index 304240755..dd3d9465f 100644 --- a/src/libs/vpatterndb/vcontainer.h +++ b/src/libs/vpatterndb/vcontainer.h @@ -64,7 +64,7 @@ QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_INTEL(2021) QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") -class VContainerData : public QSharedData //-V690 +class VContainerData final : public QSharedData //-V690 { public: diff --git a/src/libs/vpropertyexplorer/plugins/vtextproperty.h b/src/libs/vpropertyexplorer/plugins/vtextproperty.h index 2bbdfa57d..8912fdf65 100644 --- a/src/libs/vpropertyexplorer/plugins/vtextproperty.h +++ b/src/libs/vpropertyexplorer/plugins/vtextproperty.h @@ -86,6 +86,8 @@ private: Q_DISABLE_COPY(VTextProperty) }; +VPE_MARK_NONFINAL_CLASS(VTextProperty) + } #endif // VTEXTPROPERTY_H diff --git a/src/libs/vpropertyexplorer/plugins/vwidgetproperty.h b/src/libs/vpropertyexplorer/plugins/vwidgetproperty.h index 9554d7d9d..9287ee80a 100644 --- a/src/libs/vpropertyexplorer/plugins/vwidgetproperty.h +++ b/src/libs/vpropertyexplorer/plugins/vwidgetproperty.h @@ -40,7 +40,7 @@ namespace VPE //! This property holds a QWidget and displays it, if the view supports that. If not, it will behave like an empty //! property -class VPROPERTYEXPLORERSHARED_EXPORT VWidgetProperty : public VEmptyProperty +class VPROPERTYEXPLORERSHARED_EXPORT VWidgetProperty: public VEmptyProperty { public: //! Constructor @@ -67,6 +67,8 @@ public: VProperty* container = nullptr) const override; }; +VPE_MARK_NONFINAL_CLASS(VWidgetProperty) + } #endif // VWIDGETROPERTY_H diff --git a/src/libs/vpropertyexplorer/vproperty.h b/src/libs/vpropertyexplorer/vproperty.h index 366f01884..aed589b60 100644 --- a/src/libs/vpropertyexplorer/vproperty.h +++ b/src/libs/vpropertyexplorer/vproperty.h @@ -226,6 +226,8 @@ private: Q_DISABLE_COPY(VProperty) }; +VPE_MARK_NONFINAL_CLASS(VProperty) + } #endif // VPROPERTY_H diff --git a/src/libs/vpropertyexplorer/vpropertyexplorer_global.h b/src/libs/vpropertyexplorer/vpropertyexplorer_global.h index 783cdda43..fd3f87ad5 100644 --- a/src/libs/vpropertyexplorer/vpropertyexplorer_global.h +++ b/src/libs/vpropertyexplorer/vpropertyexplorer_global.h @@ -29,4 +29,54 @@ # define VPROPERTYEXPLORERSHARED_EXPORT Q_DECL_IMPORT #endif +#ifndef VPE_ATTRIBUTE_UNUSED +# if defined(Q_CC_GNU) || defined(Q_CC_CLANG) +# define VPE_ATTRIBUTE_UNUSED [[gnu::unused]] +#elif defined(Q_CC_MSVC) +# define VPE_ATTRIBUTE_UNUSED __declspec(unused) +# else +# define VPE_ATTRIBUTE_UNUSED +# endif +#endif + +// Example of use +//class Base +//{ +// virtual ~Base() +// { +// } + +// virtual int a(float f) +// { +// } +// virtual void b(double) +// { +// } +//}; + +//VPE_MARK_NONFINAL_CLASS(Base) +//VPE_ATTRIBUTE_UNUSED(Base, int, a(float)) +//VPE_ATTRIBUTE_UNUSED(Base, void, b(double) + +#ifndef VPE_MARK_NONFINAL_CLASS +#define VPE_MARK_NONFINAL_CLASS(base) \ + namespace vpe_void_namespace_for_class_##base \ + { \ + struct VPE_ATTRIBUTE_UNUSED temp_marker final : base \ + { \ + }; \ + } +#endif + +#ifndef VPE_MARK_NONFINAL_METHOD +#define VPE_MARK_NONFINAL_METHOD(base, return_type, method) \ + namespace vpe_void_namespace_for_class_##base##_methos_##method \ + { \ + struct VPE_ATTRIBUTE_UNUSED temp_marker final : base \ + { \ + inline return_type VPE_ATTRIBUTE_UNUSED method override {} \ + }; \ + } +#endif + #endif // VPROPERTYEXPLORER_GLOBAL_H diff --git a/src/libs/vpropertyexplorer/vpropertyformview.h b/src/libs/vpropertyexplorer/vpropertyformview.h index ea3aa49db..231cbe214 100644 --- a/src/libs/vpropertyexplorer/vpropertyformview.h +++ b/src/libs/vpropertyexplorer/vpropertyformview.h @@ -103,6 +103,8 @@ private: Q_DISABLE_COPY(VPropertyFormView) }; +VPE_MARK_NONFINAL_CLASS(VPropertyFormView) + } // Namespace VPE #endif // VPROPERTYFORMVIEW_H diff --git a/src/libs/vpropertyexplorer/vpropertymodel.h b/src/libs/vpropertyexplorer/vpropertymodel.h index f4db12a76..8cbcd4ceb 100644 --- a/src/libs/vpropertyexplorer/vpropertymodel.h +++ b/src/libs/vpropertyexplorer/vpropertymodel.h @@ -169,6 +169,8 @@ private: Q_DISABLE_COPY(VPropertyModel) }; +VPE_MARK_NONFINAL_CLASS(VPropertyModel) + } #endif // VPROPERTYMODEL_H diff --git a/src/libs/vpropertyexplorer/vpropertyset.h b/src/libs/vpropertyexplorer/vpropertyset.h index 46830fe5e..d0f9b69ec 100644 --- a/src/libs/vpropertyexplorer/vpropertyset.h +++ b/src/libs/vpropertyexplorer/vpropertyset.h @@ -138,6 +138,8 @@ private: Q_DISABLE_COPY(VPropertySet) }; +VPE_MARK_NONFINAL_CLASS(VPropertySet) + } #endif // VPROPERTYMODEL_H diff --git a/src/libs/vtools/dialogs/support/dialogeditwrongformula.h b/src/libs/vtools/dialogs/support/dialogeditwrongformula.h index de46cd030..1d3e33bb2 100644 --- a/src/libs/vtools/dialogs/support/dialogeditwrongformula.h +++ b/src/libs/vtools/dialogs/support/dialogeditwrongformula.h @@ -55,7 +55,7 @@ class DialogEditWrongFormula; * * Don't implemant button "Apply" for this dialog!! */ -class DialogEditWrongFormula : public QDialog +class DialogEditWrongFormula final : public QDialog { Q_OBJECT public: diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.h b/src/libs/vtools/dialogs/tools/dialogalongline.h index 74f498126..9cfda4c46 100644 --- a/src/libs/vtools/dialogs/tools/dialogalongline.h +++ b/src/libs/vtools/dialogs/tools/dialogalongline.h @@ -46,7 +46,7 @@ namespace Ui /** * @brief The DialogAlongLine class dialog for ToolAlongLine. Help create point and edit option. */ -class DialogAlongLine : public DialogTool +class DialogAlongLine final : public DialogTool { Q_OBJECT public: diff --git a/src/libs/vtools/dialogs/tools/dialogbisector.h b/src/libs/vtools/dialogs/tools/dialogbisector.h index bf2ca4f99..960cc9a16 100644 --- a/src/libs/vtools/dialogs/tools/dialogbisector.h +++ b/src/libs/vtools/dialogs/tools/dialogbisector.h @@ -46,7 +46,7 @@ namespace Ui /** * @brief The DialogBisector class dialog for ToolBisector. Help create point and edit option. */ -class DialogBisector : public DialogTool +class DialogBisector final : public DialogTool { Q_OBJECT public: diff --git a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.h b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.h index d79fb93e1..00eea6e70 100644 --- a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.h +++ b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.h @@ -43,7 +43,7 @@ namespace Ui class DialogCurveIntersectAxis; } -class DialogCurveIntersectAxis : public DialogTool +class DialogCurveIntersectAxis final : public DialogTool { Q_OBJECT diff --git a/src/libs/vtools/dialogs/tools/dialogcutarc.h b/src/libs/vtools/dialogs/tools/dialogcutarc.h index f4ba43101..93b889706 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutarc.h +++ b/src/libs/vtools/dialogs/tools/dialogcutarc.h @@ -46,7 +46,7 @@ namespace Ui /** * @brief The DialogCutArc class dialog for ToolCutArc. */ -class DialogCutArc : public DialogTool +class DialogCutArc final : public DialogTool { Q_OBJECT public: diff --git a/src/libs/vtools/dialogs/tools/dialogcutspline.h b/src/libs/vtools/dialogs/tools/dialogcutspline.h index 04cd0fecd..8d88c26b5 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutspline.h +++ b/src/libs/vtools/dialogs/tools/dialogcutspline.h @@ -46,7 +46,7 @@ namespace Ui /** * @brief The DialogCutSpline class dialog for ToolCutSpline. */ -class DialogCutSpline : public DialogTool +class DialogCutSpline final : public DialogTool { Q_OBJECT public: diff --git a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h index c9c100073..f1f3ef399 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h +++ b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.h @@ -46,7 +46,7 @@ namespace Ui /** * @brief The DialogCutSplinePath class dialog for ToolCutSplinePath. */ -class DialogCutSplinePath : public DialogTool +class DialogCutSplinePath final : public DialogTool { Q_OBJECT public: diff --git a/src/libs/vtools/dialogs/tools/dialogheight.h b/src/libs/vtools/dialogs/tools/dialogheight.h index 21e799fc5..835c8e078 100644 --- a/src/libs/vtools/dialogs/tools/dialogheight.h +++ b/src/libs/vtools/dialogs/tools/dialogheight.h @@ -46,7 +46,7 @@ namespace Ui /** * @brief The DialogHeight class dialog for ToolHeight. Help create point and edit option. */ -class DialogHeight : public DialogTool +class DialogHeight final : public DialogTool { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/line/vistoolalongline.h b/src/libs/vtools/visualization/line/vistoolalongline.h index 032d11f84..7accf744a 100644 --- a/src/libs/vtools/visualization/line/vistoolalongline.h +++ b/src/libs/vtools/visualization/line/vistoolalongline.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "visline.h" -class VisToolAlongLine :public VisLine +class VisToolAlongLine final :public VisLine { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h index 408d720bd..3fe9f84b6 100644 --- a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h +++ b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "visline.h" -class VisToolCurveIntersectAxis : public VisLine +class VisToolCurveIntersectAxis final : public VisLine { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/line/vistoolendline.h b/src/libs/vtools/visualization/line/vistoolendline.h index 06b5f68bd..f29bfe9ec 100644 --- a/src/libs/vtools/visualization/line/vistoolendline.h +++ b/src/libs/vtools/visualization/line/vistoolendline.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "visline.h" -class VisToolEndLine : public VisLine +class VisToolEndLine final : public VisLine { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/line/vistoolheight.h b/src/libs/vtools/visualization/line/vistoolheight.h index ea89996aa..60c675fb4 100644 --- a/src/libs/vtools/visualization/line/vistoolheight.h +++ b/src/libs/vtools/visualization/line/vistoolheight.h @@ -40,7 +40,7 @@ #include "../vmisc/def.h" #include "visline.h" -class VisToolHeight : public VisLine +class VisToolHeight final : public VisLine { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/path/vistoolarc.h b/src/libs/vtools/visualization/path/vistoolarc.h index 00e37979d..7e1363d10 100644 --- a/src/libs/vtools/visualization/path/vistoolarc.h +++ b/src/libs/vtools/visualization/path/vistoolarc.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "vispath.h" -class VisToolArc : public VisPath +class VisToolArc final : public VisPath { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/path/vistoolarcwithlength.h b/src/libs/vtools/visualization/path/vistoolarcwithlength.h index c5bd35182..582037f38 100644 --- a/src/libs/vtools/visualization/path/vistoolarcwithlength.h +++ b/src/libs/vtools/visualization/path/vistoolarcwithlength.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "vispath.h" -class VisToolArcWithLength : public VisPath +class VisToolArcWithLength final : public VisPath { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/path/vistoolcutarc.h b/src/libs/vtools/visualization/path/vistoolcutarc.h index 2885d282b..c0b207b23 100644 --- a/src/libs/vtools/visualization/path/vistoolcutarc.h +++ b/src/libs/vtools/visualization/path/vistoolcutarc.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "vispath.h" -class VisToolCutArc : public VisPath +class VisToolCutArc final : public VisPath { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/path/vistoolcutspline.h b/src/libs/vtools/visualization/path/vistoolcutspline.h index f415ea95c..1cb6574e2 100644 --- a/src/libs/vtools/visualization/path/vistoolcutspline.h +++ b/src/libs/vtools/visualization/path/vistoolcutspline.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "vispath.h" -class VisToolCutSpline : public VisPath +class VisToolCutSpline final : public VisPath { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/path/vistoolcutsplinepath.h b/src/libs/vtools/visualization/path/vistoolcutsplinepath.h index 247039639..e522c0e05 100644 --- a/src/libs/vtools/visualization/path/vistoolcutsplinepath.h +++ b/src/libs/vtools/visualization/path/vistoolcutsplinepath.h @@ -39,7 +39,7 @@ #include "../vmisc/def.h" #include "vispath.h" -class VisToolCutSplinePath : public VisPath +class VisToolCutSplinePath final : public VisPath { Q_OBJECT public: diff --git a/src/libs/vwidgets/fancytabbar/fancytab.h b/src/libs/vwidgets/fancytabbar/fancytab.h index fb8bb5dd9..7baba42ff 100644 --- a/src/libs/vwidgets/fancytabbar/fancytab.h +++ b/src/libs/vwidgets/fancytabbar/fancytab.h @@ -33,7 +33,7 @@ #include #include -class FancyTab : public QObject +class FancyTab final : public QObject { friend class FancyTabBar; Q_OBJECT diff --git a/src/libs/vwidgets/vcurvepathitem.cpp b/src/libs/vwidgets/vcurvepathitem.cpp index e25f6f8c8..a0929c753 100644 --- a/src/libs/vwidgets/vcurvepathitem.cpp +++ b/src/libs/vwidgets/vcurvepathitem.cpp @@ -39,7 +39,9 @@ VCurvePathItem::VCurvePathItem(QGraphicsItem *parent) m_directionArrows(), m_points(), m_defaultWidth(VAbstractApplication::VApp()->Settings()->WidthMainLine()) -{} +{ + SCASSERT(parent != nullptr); +} //--------------------------------------------------------------------------------------------------------------------- QPainterPath VCurvePathItem::shape() const diff --git a/src/libs/vwidgets/vgrainlineitem.h b/src/libs/vwidgets/vgrainlineitem.h index d15a3e987..d252fcbc7 100644 --- a/src/libs/vwidgets/vgrainlineitem.h +++ b/src/libs/vwidgets/vgrainlineitem.h @@ -33,7 +33,7 @@ #include "../vpatterndb/floatItemData/vgrainlinedata.h" #include "../vmisc/def.h" -class VGrainlineItem : public VPieceItem +class VGrainlineItem final : public VPieceItem { Q_OBJECT public: diff --git a/src/libs/vwidgets/vhighlighter.h b/src/libs/vwidgets/vhighlighter.h index a998a20dc..313fd6899 100644 --- a/src/libs/vwidgets/vhighlighter.h +++ b/src/libs/vwidgets/vhighlighter.h @@ -40,7 +40,7 @@ struct ParenthesisInfo int position; }; -class VTextBlockData : public QTextBlockUserData +class VTextBlockData final : public QTextBlockUserData { public: VTextBlockData(); diff --git a/src/libs/vwidgets/vtextgraphicsitem.h b/src/libs/vwidgets/vtextgraphicsitem.h index cbbd09f47..780ef3bf6 100644 --- a/src/libs/vwidgets/vtextgraphicsitem.h +++ b/src/libs/vwidgets/vtextgraphicsitem.h @@ -48,7 +48,7 @@ * which can be dragged around, resized and rotated within the parent item. The text font * size will be automatically updated, so that the entire text will fit into the item. */ -class VTextGraphicsItem : public VPieceItem +class VTextGraphicsItem final : public VPieceItem { Q_OBJECT public: