Commit 699ec1e4 authored by Mathieu Faverge's avatar Mathieu Faverge

Apply patch 2 from issue #13

parent 0e9d8bdd
...@@ -91,9 +91,7 @@ const Message::end_information_t Message::endi; ...@@ -91,9 +91,7 @@ const Message::end_information_t Message::endi;
const Message::end_selection_information_t Message::endsi; const Message::end_selection_information_t Message::endsi;
#endif #endif
Message::Message() { Message::Message() = default;
}
Message *Message::get_instance() { Message *Message::get_instance() {
if (_message) if (_message)
......
...@@ -90,8 +90,7 @@ Interval_select::Interval_select(Interface_graphic * console,QWidget *parent) : ...@@ -90,8 +90,7 @@ Interval_select::Interval_select(Interface_graphic * console,QWidget *parent) :
_applied = false; _applied = false;
} }
Interval_select::~Interval_select() { Interval_select::~Interval_select() = default;
}
Trace* Interval_select::get_trace() { Trace* Interval_select::get_trace() {
return _trace; return _trace;
......
...@@ -87,8 +87,7 @@ Node_select::Node_select(Interface_graphic * console,QWidget *parent) : QWidget( ...@@ -87,8 +87,7 @@ Node_select::Node_select(Interface_graphic * console,QWidget *parent) : QWidget(
QMetaObject::connectSlotsByName(nullptr); QMetaObject::connectSlotsByName(nullptr);
} }
Node_select::~Node_select() { Node_select::~Node_select() = default;
}
void Node_select::set_initial_container_names(){ void Node_select::set_initial_container_names(){
......
...@@ -526,8 +526,7 @@ Settings_window::Settings_window(Core *c, QWidget *parent) ...@@ -526,8 +526,7 @@ Settings_window::Settings_window(Core *c, QWidget *parent)
tabWidget->insertTab(3, _tab_links, "Links"); tabWidget->insertTab(3, _tab_links, "Links");
} }
Settings_window::~Settings_window() { Settings_window::~Settings_window() = default;
}
void Settings_window::on_tabWidget_currentChanged(int ) { void Settings_window::on_tabWidget_currentChanged(int ) {
......
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) Adam Higerd <coda@bobandgeorge.com>. Some rights reserved. ** Copyright (C) Adam Higerd <coda@bobandgeorge.com>. Some rights reserved.
** **
** This file is part of the QxtCore module of the ** This file is part of the QxtCore module of the
** Qt eXTension library <http://libqxt.sourceforge.net> ** Qt eXTension library <http://libqxt.sourceforge.net>
** **
** This library is free software; you can redistribute it and/or ** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public ** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either ** License as published by the Free Software Foundation; either
** version 2.1 of the License, or any later version. ** version 2.1 of the License, or any later version.
** **
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
** **
** There is aditional information in the LICENSE file of libqxt. ** There is aditional information in the LICENSE file of libqxt.
** If you did not receive a copy of the file try to download it or ** If you did not receive a copy of the file try to download it or
** contact the libqxt Management ** contact the libqxt Management
** **
****************************************************************************/ ****************************************************************************/
/** /**
\class QxtPimpl QxtPimpl \class QxtPimpl QxtPimpl
\ingroup core \ingroup core
\brief Hide private details of a class \brief Hide private details of a class
Application code generally doesn't have to be concerned about hiding its Application code generally doesn't have to be concerned about hiding its
implementation details, but when writing library code it is important to implementation details, but when writing library code it is important to
maintain a constant interface, both source and binary. Maintaining a constant maintain a constant interface, both source and binary. Maintaining a constant
source interface is easy enough, but keeping the binary interface constant source interface is easy enough, but keeping the binary interface constant
means moving implementation details into a private class. The PIMPL, or means moving implementation details into a private class. The PIMPL, or
d-pointer, idiom is a common method of implementing this separation. QxtPimpl d-pointer, idiom is a common method of implementing this separation. QxtPimpl
offers a convenient way to connect the public and private sides of your class. offers a convenient way to connect the public and private sides of your class.
\section start Getting Started \section start Getting Started
Before you declare the public class, you need to make a forward declaration Before you declare the public class, you need to make a forward declaration
of the private class. The private class must have the same name as the public of the private class. The private class must have the same name as the public
class, followed by the word Private. For example, a class named MyTest would class, followed by the word Private. For example, a class named MyTest would
declare the private class with: declare the private class with:
\code \code
class MyTestPrivate; class MyTestPrivate;
\endcode \endcode
\subsection pub The Public Class \subsection pub The Public Class
Generally, you shouldn't keep any data members in the public class without a Generally, you shouldn't keep any data members in the public class without a
good reason. Functions that are part of the public interface should be declared good reason. Functions that are part of the public interface should be declared
in the public class, and functions that need to be available to subclasses (for in the public class, and functions that need to be available to subclasses (for
calling or overriding) should be in the protected section of the public class. calling or overriding) should be in the protected section of the public class.
To connect the private class to the public class, include the To connect the private class to the public class, include the
QXT_DECLARE_PRIVATE macro in the private section of the public class. In the QXT_DECLARE_PRIVATE macro in the private section of the public class. In the
example above, the private class is connected as follows: example above, the private class is connected as follows:
\code \code
private: private:
QXT_DECLARE_PRIVATE(MyTest); QXT_DECLARE_PRIVATE(MyTest);
\endcode \endcode
Additionally, you must include the QXT_INIT_PRIVATE macro in the public class's Additionally, you must include the QXT_INIT_PRIVATE macro in the public class's
constructor. Continuing with the MyTest example, your constructor might look constructor. Continuing with the MyTest example, your constructor might look
like this: like this:
\code \code
MyTest::MyTest() { MyTest::MyTest() {
// initialization // initialization
QXT_INIT_PRIVATE(MyTest); QXT_INIT_PRIVATE(MyTest);
} }
\endcode \endcode
\subsection priv The Private Class \subsection priv The Private Class
As mentioned above, data members should usually be kept in the private class. As mentioned above, data members should usually be kept in the private class.
This allows the memory layout of the private class to change without breaking This allows the memory layout of the private class to change without breaking
binary compatibility for the public class. Functions that exist only as binary compatibility for the public class. Functions that exist only as
implementation details, or functions that need access to private data members, implementation details, or functions that need access to private data members,
should be implemented here. should be implemented here.
To define the private class, inherit from the template QxtPrivate class, and To define the private class, inherit from the template QxtPrivate class, and
include the QXT_DECLARE_PUBLIC macro in its public section. The template include the QXT_DECLARE_PUBLIC macro in its public section. The template
parameter should be the name of the public class. For example: parameter should be the name of the public class. For example:
\code \code
class MyTestPrivate : public QxtPrivate<MyTest> { class MyTestPrivate : public QxtPrivate<MyTest> {
public: public:
MyTestPrivate(); MyTestPrivate();
QXT_DECLARE_PUBLIC(MyTest); QXT_DECLARE_PUBLIC(MyTest);
}; };
\endcode \endcode
\section cross Accessing Private Members \section cross Accessing Private Members
Use the qxt_d() function (actually a function-like object) from functions in Use the qxt_d() function (actually a function-like object) from functions in
the public class to access the private class. Similarly, functions in the the public class to access the private class. Similarly, functions in the
private class can invoke functions in the public class by using the qxt_p() private class can invoke functions in the public class by using the qxt_p()
function (this one's actually a function). function (this one's actually a function).
For example, assume that MyTest has methods named getFoobar and doBaz(), For example, assume that MyTest has methods named getFoobar and doBaz(),
and MyTestPrivate has a member named foobar and a method named doQuux(). and MyTestPrivate has a member named foobar and a method named doQuux().
The code might resemble this example: The code might resemble this example:
\code \code
int MyTest::getFoobar() { int MyTest::getFoobar() {
return qxt_d().foobar; return qxt_d().foobar;
} }
void MyTestPrivate::doQuux() { void MyTestPrivate::doQuux() {
qxt_p().doBaz(foobar); qxt_p().doBaz(foobar);
} }
\endcode \endcode
*/ */
#ifndef QXTPIMPL_H #ifndef QXTPIMPL_H
#define QXTPIMPL_H #define QXTPIMPL_H
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Declares that a public class has a related private class. * Declares that a public class has a related private class.
* *
* This shuold be put in the private section of the public class. The parameter is the name of the public class. * This shuold be put in the private section of the public class. The parameter is the name of the public class.
*/ */
#define QXT_DECLARE_PRIVATE(PUB) friend class PUB##Private; QxtPrivateInterface<PUB, PUB##Private> qxt_d; #define QXT_DECLARE_PRIVATE(PUB) friend class PUB##Private; QxtPrivateInterface<PUB, PUB##Private> qxt_d;
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Declares that a private class has a related public class. * Declares that a private class has a related public class.
* *
* This may be put anywhere in the declaration of the private class. The parameter is the name of the public class. * This may be put anywhere in the declaration of the private class. The parameter is the name of the public class.
*/ */
#define QXT_DECLARE_PUBLIC(PUB) friend class PUB; #define QXT_DECLARE_PUBLIC(PUB) friend class PUB;
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Initializes resources owned by the private class. * Initializes resources owned by the private class.
* *
* This should be called from the public class's constructor, * This should be called from the public class's constructor,
* before qxt_d() is used for the first time. The parameter is the name of the public class. * before qxt_d() is used for the first time. The parameter is the name of the public class.
*/ */
#define QXT_INIT_PRIVATE(PUB) qxt_d.setPublic(this); #define QXT_INIT_PRIVATE(PUB) qxt_d.setPublic(this);
#ifdef QXT_DOXYGEN_RUN #ifdef QXT_DOXYGEN_RUN
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Returns a reference to the private class. * Returns a reference to the private class.
* *
* This function is only available in a class using \a QXT_DECLARE_PRIVATE. * This function is only available in a class using \a QXT_DECLARE_PRIVATE.
*/ */
QxtPrivate<PUB>& qxt_d(); QxtPrivate<PUB>& qxt_d();
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Returns a const reference to the private class. * Returns a const reference to the private class.
* *
* This function is only available in a class using \a QXT_DECLARE_PRIVATE. * This function is only available in a class using \a QXT_DECLARE_PRIVATE.
* This overload will be automatically used in const functions. * This overload will be automatically used in const functions.
*/ */
const QxtPrivate<PUB>& qxt_d(); const QxtPrivate<PUB>& qxt_d();
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Returns a reference to the public class. * Returns a reference to the public class.
* *
* This function is only available in a class using \a QXT_DECLARE_PUBLIC. * This function is only available in a class using \a QXT_DECLARE_PUBLIC.
*/ */
PUB& qxt_p(); PUB& qxt_p();
/*! \relates QxtPimpl /*! \relates QxtPimpl
* Returns a const reference to the public class. * Returns a const reference to the public class.
* *
* This function is only available in a class using \a QXT_DECLARE_PUBLIC. * This function is only available in a class using \a QXT_DECLARE_PUBLIC.
* This overload will be automatically used in const functions. * This overload will be automatically used in const functions.
*/ */
const PUB& qxt_p(); const PUB& qxt_p();
#endif #endif
#ifndef QXT_DOXYGEN_RUN #ifndef QXT_DOXYGEN_RUN
template <typename PUB> template <typename PUB>
class QxtPrivate { class QxtPrivate {
public: public:
virtual ~QxtPrivate() {} virtual ~QxtPrivate() = default;
inline void QXT_setPublic(PUB* pub) { qxt_p_ptr = pub; } inline void QXT_setPublic(PUB* pub) { qxt_p_ptr = pub; }
protected: protected:
inline PUB& qxt_p() { return *qxt_p_ptr; } inline PUB& qxt_p() { return *qxt_p_ptr; }
inline const PUB& qxt_p() const { return *qxt_p_ptr; } inline const PUB& qxt_p() const { return *qxt_p_ptr; }
private: private:
PUB* qxt_p_ptr; PUB* qxt_p_ptr;
}; };
template <typename PUB, typename PVT> template <typename PUB, typename PVT>
class QxtPrivateInterface { class QxtPrivateInterface {
friend class QxtPrivate<PUB>; friend class QxtPrivate<PUB>;
public: public:
QxtPrivateInterface() { pvt = new PVT; } QxtPrivateInterface() { pvt = new PVT; }
~QxtPrivateInterface() { delete pvt; } ~QxtPrivateInterface() { delete pvt; }
inline void setPublic(PUB* pub) { pvt->QXT_setPublic(pub); } inline void setPublic(PUB* pub) { pvt->QXT_setPublic(pub); }
inline PVT& operator()() { return *static_cast<PVT*>(pvt); } inline PVT& operator()() { return *static_cast<PVT*>(pvt); }
inline const PVT& operator()() const { return *static_cast<PVT*>(pvt); } inline const PVT& operator()() const { return *static_cast<PVT*>(pvt); }
private: private:
QxtPrivate<PUB>* pvt; QxtPrivate<PUB>* pvt;
}; };
#endif #endif
#endif #endif
\ No newline at end of file
...@@ -416,9 +416,7 @@ QxtSpanSlider::QxtSpanSlider(Qt::Orientation orientation, QWidget* parent) : QSl ...@@ -416,9 +416,7 @@ QxtSpanSlider::QxtSpanSlider(Qt::Orientation orientation, QWidget* parent) : QSl
/*! /*!
Destructs the span slider. Destructs the span slider.
*/ */
QxtSpanSlider::~QxtSpanSlider() QxtSpanSlider::~QxtSpanSlider() = default;
{
}
/*! /*!
\property QxtSpanSlider::handleMovementMode \property QxtSpanSlider::handleMovementMode
......
...@@ -12,8 +12,7 @@ viteQTreeWidget::viteQTreeWidget(QWidget *parent) ...@@ -12,8 +12,7 @@ viteQTreeWidget::viteQTreeWidget(QWidget *parent)
} }
viteQTreeWidget::~viteQTreeWidget(){ viteQTreeWidget::~viteQTreeWidget() = default;
}
void viteQTreeWidget::dropEvent(QDropEvent *e){ void viteQTreeWidget::dropEvent(QDropEvent *e){
......
...@@ -85,7 +85,7 @@ typedef struct PajeLine { ...@@ -85,7 +85,7 @@ typedef struct PajeLine {
int _nbtks; int _nbtks;
char **_tokens; char **_tokens;
PajeLine() {} PajeLine() = default;
} PajeLine_t; } PajeLine_t;
......
...@@ -69,9 +69,9 @@ ...@@ -69,9 +69,9 @@
/* -- */ /* -- */
using namespace std; using namespace std;
ParserVite::ParserVite() {} ParserVite::ParserVite() = default;
ParserVite::ParserVite(const std::string &filename) : Parser(filename) {} ParserVite::ParserVite(const std::string &filename) : Parser(filename) {}
ParserVite::~ParserVite() {} ParserVite::~ParserVite() = default;
void ParserVite::parse(Trace &trace, void ParserVite::parse(Trace &trace,
bool finish_trace_after_parse){ bool finish_trace_after_parse){
......
...@@ -78,7 +78,7 @@ public: ...@@ -78,7 +78,7 @@ public:
Parser(); Parser();
Parser(const std::string &filename); Parser(const std::string &filename);
virtual ~Parser() {}; virtual ~Parser() = default;
/*! /*!
* \fn parse(const std::string &filename, Trace &trace, bool finish_trace_after_parse = true) * \fn parse(const std::string &filename, Trace &trace, bool finish_trace_after_parse = true)
......
...@@ -99,8 +99,7 @@ private: ...@@ -99,8 +99,7 @@ private:
* \brief The default constructor is in private scope to prevent Render instanciation without * \brief The default constructor is in private scope to prevent Render instanciation without
* provide a drawing instance. * provide a drawing instance.
*/ */
GanttDiagram(){ GanttDiagram() = default;
}
public: public:
...@@ -120,8 +119,7 @@ public: ...@@ -120,8 +119,7 @@ public:
/*! /*!
* \brief The destructor * \brief The destructor
*/ */
virtual ~GanttDiagram(){ virtual ~GanttDiagram() = default;
}
/*********************************** /***********************************
* *
......
...@@ -85,8 +85,7 @@ Geometry::Geometry(){ ...@@ -85,8 +85,7 @@ Geometry::Geometry(){
} }
Geometry::~Geometry(){ Geometry::~Geometry() = default;
}
......
...@@ -179,8 +179,7 @@ Hook_event::Hook_event(Render* render_instance, Core* core, QWidget *parent, con ...@@ -179,8 +179,7 @@ Hook_event::Hook_event(Render* render_instance, Core* core, QWidget *parent, con
} }
Hook_event::~Hook_event(){ Hook_event::~Hook_event() = default;
}
......
...@@ -61,7 +61,7 @@ private: ...@@ -61,7 +61,7 @@ private:
/*! /*!
* \brief The default constructor. In private scope to prevent instance. * \brief The default constructor. In private scope to prevent instance.
*/ */
Ruler(){} Ruler() = default;
/*********************************** /***********************************
* *
......
...@@ -62,8 +62,7 @@ Render_stats_svg::Render_stats_svg(string filename){ ...@@ -62,8 +62,7 @@ Render_stats_svg::Render_stats_svg(string filename){
_y_max = 0; _y_max = 0;
} }
Render_stats_svg::~Render_stats_svg(){ Render_stats_svg::~Render_stats_svg() = default;
}
void Render_stats_svg::set_total_height(Element_pos h) { void Render_stats_svg::set_total_height(Element_pos h) {
......
...@@ -90,8 +90,7 @@ public: ...@@ -90,8 +90,7 @@ public:
/*! /*!
* \brief The destructor * \brief The destructor
*/ */
virtual ~DrawCounter() { virtual ~DrawCounter() = default;
}
/*! /*!
......
...@@ -86,8 +86,7 @@ public: ...@@ -86,8 +86,7 @@ public:
/*! /*!
* \brief The destructor * \brief The destructor
*/ */
virtual ~DrawHDiagram() { virtual ~DrawHDiagram() = default;
}
/*! /*!
......
...@@ -155,8 +155,7 @@ public: ...@@ -155,8 +155,7 @@ public:
/*! /*!
* \brief The destructor * \brief The destructor
*/ */
virtual ~DrawStats() { virtual ~DrawStats() = default;
}
/*! /*!
......
...@@ -67,8 +67,7 @@ public: ...@@ -67,8 +67,7 @@ public:
/*! /*!
* \brief The destructor * \brief The destructor
*/ */