From 71f88c02f79a1164430eec1de3e15edec011a15e Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Wed, 25 Sep 2013 18:35:21 +0300
Subject: improve construcors in abstract classes.

Also add some missing final to classes.
---
 src/being/actor.h                   |  4 +--
 src/being/playerrelations.h         | 18 +++++++------
 src/configuration.h                 |  4 +--
 src/dragdrop.h                      |  2 +-
 src/equipment.h                     |  2 +-
 src/gui/debugwindow.h               |  9 +++----
 src/gui/widgets/characterviewbase.h | 18 ++++++-------
 src/gui/widgets/layout.h            | 32 +++++++++++------------
 src/gui/widgets/setupitem.h         | 52 ++++++++++++++++++-------------------
 src/gui/widgets/setuptab.h          |  4 +--
 src/gui/widgets/shortcutcontainer.h | 10 +++----
 src/gui/widgets/tablemodel.h        |  9 ++++---
 src/gui/widgets/widget2.h           | 26 +++++++++----------
 src/gui/widgets/widgetgroup.h       |  8 +++---
 src/net/ea/beinghandler.h           |  5 ++--
 src/net/ea/charserverhandler.h      |  4 +--
 src/net/ea/inventoryhandler.h       |  4 +--
 src/net/ea/loginhandler.h           |  4 +--
 src/net/ea/npchandler.h             |  4 +--
 src/net/loginhandler.h              |  8 +++---
 src/net/messagehandler.h            | 10 ++++---
 src/render/graphics.h               |  9 ++++---
 src/resources/imagehelper.h         |  6 ++---
 src/sprite.h                        | 10 +++----
 24 files changed, 133 insertions(+), 129 deletions(-)

diff --git a/src/being/actor.h b/src/being/actor.h
index 9467c87eb..03f301a78 100644
--- a/src/being/actor.h
+++ b/src/being/actor.h
@@ -38,8 +38,6 @@ typedef Actors::const_iterator ActorsCIter;
 class Actor
 {
 public:
-    Actor();
-
     A_DELETE_COPY(Actor)
 
     virtual ~Actor();
@@ -130,6 +128,8 @@ public:
     { return mMap; }
 
 protected:
+    Actor();
+
     Map *mMap;
     Vector mPos;                /**< Position in pixels relative to map. */
     int mYDiff;
diff --git a/src/being/playerrelations.h b/src/being/playerrelations.h
index 5d11b5b25..c24363fcf 100644
--- a/src/being/playerrelations.h
+++ b/src/being/playerrelations.h
@@ -79,12 +79,6 @@ class PlayerIgnoreStrategy
         std::string mDescription;
         std::string mShortName;
 
-        PlayerIgnoreStrategy() :
-            mDescription(),
-            mShortName()
-        {
-        }
-
         A_DELETE_COPY(PlayerIgnoreStrategy)
 
         virtual ~PlayerIgnoreStrategy()
@@ -95,13 +89,17 @@ class PlayerIgnoreStrategy
          */
         virtual void ignore(Being *const being,
                             const unsigned int flags) const = 0;
+    protected:
+        PlayerIgnoreStrategy() :
+            mDescription(),
+            mShortName()
+        {
+        }
 };
 
 class PlayerRelationsListener
 {
     public:
-        PlayerRelationsListener()
-        { }
 
         virtual ~PlayerRelationsListener()
         { }
@@ -109,6 +107,10 @@ class PlayerRelationsListener
         virtual void updatedPlayer(const std::string &name) = 0;
 
         virtual void updateAll() = 0;
+
+    protected:
+        PlayerRelationsListener()
+        { }
 };
 
 /**
diff --git a/src/configuration.h b/src/configuration.h
index 5c36ca4e6..85e55d14a 100644
--- a/src/configuration.h
+++ b/src/configuration.h
@@ -83,8 +83,6 @@ class ConfigurationObject
     friend class Configuration;
 
     public:
-        ConfigurationObject();
-
         virtual ~ConfigurationObject();
 
         /**
@@ -208,6 +206,8 @@ class ConfigurationObject
 #endif
 
     protected:
+        ConfigurationObject();
+
         virtual void initFromXML(const XmlNodePtr parent_node);
         virtual void writeToXML(const XmlTextWriterPtr writer);
 
diff --git a/src/dragdrop.h b/src/dragdrop.h
index 3d3a4eba3..d282d82e3 100644
--- a/src/dragdrop.h
+++ b/src/dragdrop.h
@@ -49,7 +49,7 @@ enum DragDropSource
     DRAGDROP_SOURCE_EQUIPMENT
 };
 
-class DragDrop
+class DragDrop final
 {
     public:
         DragDrop(Item *const item, const DragDropSource source) :
diff --git a/src/equipment.h b/src/equipment.h
index 10103f205..93c488bdf 100644
--- a/src/equipment.h
+++ b/src/equipment.h
@@ -29,7 +29,7 @@ static const int EQUIPMENT_SIZE = 13;
 
 class Item;
 
-class Equipment
+class Equipment final
 {
     public:
         /**
diff --git a/src/gui/debugwindow.h b/src/gui/debugwindow.h
index 3a6fa7229..ef67df432 100644
--- a/src/gui/debugwindow.h
+++ b/src/gui/debugwindow.h
@@ -34,10 +34,6 @@ class DebugTab : public Container
     friend class DebugWindow;
 
     public:
-        explicit DebugTab(const Widget2 *const widget) :
-            Container(widget)
-        { }
-
         A_DELETE_COPY(DebugTab)
 
         void logic() override = 0;
@@ -45,7 +41,10 @@ class DebugTab : public Container
         void resize(const int x, const int y)
         { setDimension(gcn::Rectangle(0, 0, x, y)); }
 
-    private:
+    protected:
+        explicit DebugTab(const Widget2 *const widget) :
+            Container(widget)
+        { }
 };
 
 class MapDebugTab final : public DebugTab
diff --git a/src/gui/widgets/characterviewbase.h b/src/gui/widgets/characterviewbase.h
index 2c90bb1e6..8ef949b7c 100644
--- a/src/gui/widgets/characterviewbase.h
+++ b/src/gui/widgets/characterviewbase.h
@@ -33,15 +33,6 @@ class CharacterViewBase : public Container,
                           public gcn::ActionListener
 {
     public:
-        CharacterViewBase(CharSelectDialog *const widget, const int padding) :
-            Container(widget),
-            gcn::ActionListener(),
-            mParent(widget),
-            mPadding(padding),
-            mSelected(0)
-        {
-        }
-
         A_DELETE_COPY(CharacterViewBase)
 
         virtual ~CharacterViewBase()
@@ -57,6 +48,15 @@ class CharacterViewBase : public Container,
         }
 
     protected:
+        CharacterViewBase(CharSelectDialog *const widget, const int padding) :
+            Container(widget),
+            gcn::ActionListener(),
+            mParent(widget),
+            mPadding(padding),
+            mSelected(0)
+        {
+        }
+
         CharSelectDialog *mParent;
         int mPadding;
         int mSelected;
diff --git a/src/gui/widgets/layout.h b/src/gui/widgets/layout.h
index 33930c69e..8a33f03f6 100644
--- a/src/gui/widgets/layout.h
+++ b/src/gui/widgets/layout.h
@@ -173,22 +173,6 @@ class LayoutCell
             FILL
         };
 
-        LayoutCell():
-            mWidget(nullptr),
-            mHPadding(0),
-            mVPadding(0),
-            mType(NONE)
-        {
-            mExtent[0] = 0;
-            mExtent[1] = 0;
-            mAlign[0] = 0;
-            mAlign[1] = 0;
-            mNbFill[0] = 0;
-            mNbFill[1] = 0;
-            mSize[0] = 0;
-            mSize[1] = 0;
-        }
-
         virtual ~LayoutCell();
 
         /**
@@ -286,6 +270,22 @@ class LayoutCell
         };
 
     private:
+        LayoutCell():
+            mWidget(nullptr),
+            mHPadding(0),
+            mVPadding(0),
+            mType(NONE)
+        {
+            mExtent[0] = 0;
+            mExtent[1] = 0;
+            mAlign[0] = 0;
+            mAlign[1] = 0;
+            mNbFill[0] = 0;
+            mNbFill[1] = 0;
+            mSize[0] = 0;
+            mSize[1] = 0;
+        }
+
         // Copy not allowed, as the cell may own an array.
         explicit LayoutCell(LayoutCell const &);
         LayoutCell &operator=(LayoutCell const &);
diff --git a/src/gui/widgets/setupitem.h b/src/gui/widgets/setupitem.h
index 476a31ae4..9c5cc11e3 100644
--- a/src/gui/widgets/setupitem.h
+++ b/src/gui/widgets/setupitem.h
@@ -57,15 +57,6 @@ class SetupItem : public gcn::ActionListener,
             VNONE
         };
 
-        SetupItem(const std::string &text, const std::string &description,
-                  const std::string &keyName, SetupTabScroll *const parent,
-                  const std::string &eventName, const bool mainConfig);
-
-        SetupItem(const std::string &text, const std::string &description,
-                  const std::string &keyName, SetupTabScroll *const parent,
-                  const std::string &eventName, const std::string &def,
-                  const bool mainConfig);
-
         A_DELETE_COPY(SetupItem)
 
         ~SetupItem();
@@ -106,6 +97,15 @@ class SetupItem : public gcn::ActionListener,
         void rereadValue();
 
     protected:
+        SetupItem(const std::string &text, const std::string &description,
+                  const std::string &keyName, SetupTabScroll *const parent,
+                  const std::string &eventName, const bool mainConfig);
+
+        SetupItem(const std::string &text, const std::string &description,
+                  const std::string &keyName, SetupTabScroll *const parent,
+                  const std::string &eventName, const std::string &def,
+                  const bool mainConfig);
+
         std::string mText;
 
         std::string mDescription;
@@ -427,6 +427,23 @@ class SetupItemSlider2 final : public SetupItem
 class SetupItemSliderList : public SetupItem
 {
     public:
+        A_DELETE_COPY(SetupItemSliderList)
+
+        ~SetupItemSliderList();
+
+        void createControls();
+
+        void fromWidget() override;
+
+        void toWidget() override;
+
+        virtual void action(const gcn::ActionEvent &event) override;
+
+        void apply(const std::string &eventName) override;
+
+        virtual void addMoreControls() = 0;
+
+    protected:
         SetupItemSliderList(const std::string &text,
                             const std::string &description,
                             const std::string &keyName,
@@ -446,23 +463,6 @@ class SetupItemSliderList : public SetupItem
                             const bool onTheFly = false,
                             const bool mainConfig = true);
 
-        A_DELETE_COPY(SetupItemSliderList)
-
-        ~SetupItemSliderList();
-
-        void createControls();
-
-        void fromWidget() override;
-
-        void toWidget() override;
-
-        virtual void action(const gcn::ActionEvent &event) override;
-
-        void apply(const std::string &eventName) override;
-
-        virtual void addMoreControls() = 0;
-
-    protected:
         HorizontContainer *mHorizont;
         Label *mLabel;
         SliderList *mSlider;
diff --git a/src/gui/widgets/setuptab.h b/src/gui/widgets/setuptab.h
index 8e656234f..ab866ba28 100644
--- a/src/gui/widgets/setuptab.h
+++ b/src/gui/widgets/setuptab.h
@@ -40,8 +40,6 @@ class SetupTab : public Container,
                  public gcn::WidgetListener
 {
     public:
-        explicit SetupTab(const Widget2 *const widget);
-
         A_DELETE_COPY(SetupTab)
 
         const std::string &getName() const A_WARN_UNUSED
@@ -60,6 +58,8 @@ class SetupTab : public Container,
         virtual void externalUpdated();
 
     protected:
+        explicit SetupTab(const Widget2 *const widget);
+
         /**
          * Sets the name displayed on the tab. Should be set in the
          * constructor of a subclass.
diff --git a/src/gui/widgets/shortcutcontainer.h b/src/gui/widgets/shortcutcontainer.h
index 2f6a48bc4..60c1bb539 100644
--- a/src/gui/widgets/shortcutcontainer.h
+++ b/src/gui/widgets/shortcutcontainer.h
@@ -43,11 +43,6 @@ class ShortcutContainer : public gcn::Widget,
                           public gcn::MouseListener
 {
     public:
-        /**
-         * Constructor. Initializes the shortcut container.
-         */
-        ShortcutContainer();
-
         A_DELETE_COPY(ShortcutContainer)
 
         /**
@@ -98,6 +93,11 @@ class ShortcutContainer : public gcn::Widget,
         { mRedraw = b; }
 
     protected:
+        /**
+         * Constructor. Initializes the shortcut container.
+         */
+        ShortcutContainer();
+
         /**
          * Gets the index from the grid provided the point is in an item box.
          *
diff --git a/src/gui/widgets/tablemodel.h b/src/gui/widgets/tablemodel.h
index 427b8bf3a..7d7daacb9 100644
--- a/src/gui/widgets/tablemodel.h
+++ b/src/gui/widgets/tablemodel.h
@@ -57,10 +57,6 @@ public:
 class TableModel
 {
 public:
-    TableModel() :
-        listeners()
-    {
-    }
     virtual ~TableModel()
     { }
 
@@ -95,6 +91,11 @@ public:
     virtual void removeListener(TableModelListener *const listener);
 
 protected:
+    TableModel() :
+        listeners()
+    {
+    }
+
     /**
      * Tells all listeners that the table is about to see an update
      */
diff --git a/src/gui/widgets/widget2.h b/src/gui/widgets/widget2.h
index 9e164046b..0ab171b3e 100644
--- a/src/gui/widgets/widget2.h
+++ b/src/gui/widgets/widget2.h
@@ -29,19 +29,6 @@
 class Widget2
 {
     public:
-        Widget2() :
-            mPaletteOffset(0),
-            mForegroundColor2()
-        {
-        }
-
-        explicit Widget2(const Widget2 *const widget) :
-            mPaletteOffset(widget ? widget->mPaletteOffset : 0),
-            mForegroundColor2()
-        {
-            checkPalette();
-        }
-
         virtual ~Widget2()
         {
         }
@@ -91,6 +78,19 @@ class Widget2
         }
 
     protected:
+        Widget2() :
+            mPaletteOffset(0),
+            mForegroundColor2()
+        {
+        }
+
+        explicit Widget2(const Widget2 *const widget) :
+            mPaletteOffset(widget ? widget->mPaletteOffset : 0),
+            mForegroundColor2()
+        {
+            checkPalette();
+        }
+
         int mPaletteOffset;
         gcn::Color mForegroundColor2;
 };
diff --git a/src/gui/widgets/widgetgroup.h b/src/gui/widgets/widgetgroup.h
index 55507f316..308c8fb8a 100644
--- a/src/gui/widgets/widgetgroup.h
+++ b/src/gui/widgets/widgetgroup.h
@@ -33,10 +33,6 @@ class WidgetGroup : public Container,
                     public gcn::ActionListener
 {
     public:
-        WidgetGroup(const Widget2 *const widget,
-                    const std::string &group, const int height,
-                    const int spacing);
-
         A_DELETE_COPY(WidgetGroup)
 
         virtual void addButton(const std::string &tag);
@@ -57,6 +53,10 @@ class WidgetGroup : public Container,
                                      const A_WARN_UNUSED = 0;
 
     protected:
+        WidgetGroup(const Widget2 *const widget,
+                    const std::string &group, const int height,
+                    const int spacing);
+
         int mSpacing;
         int mCount;
         std::string mGroup;
diff --git a/src/net/ea/beinghandler.h b/src/net/ea/beinghandler.h
index ad57e128e..c27d7c2da 100644
--- a/src/net/ea/beinghandler.h
+++ b/src/net/ea/beinghandler.h
@@ -31,11 +31,11 @@ namespace Ea
 class BeingHandler : public Net::BeingHandler
 {
     public:
-        explicit BeingHandler(const bool enableSync);
-
         A_DELETE_COPY(BeingHandler)
 
     protected:
+        explicit BeingHandler(const bool enableSync);
+
         virtual Being *createBeing(int id, int16_t job) const A_WARN_UNUSED;
 
         virtual void setSprite(Being *const being, const unsigned int slot,
@@ -94,7 +94,6 @@ class BeingHandler : public Net::BeingHandler
 
         virtual void processPvpSet(Net::MessageIn &msg) const;
 
-    protected:
         // Should we honor server "Stop Walking" packets
         bool mSync;
         int mSpawnId;
diff --git a/src/net/ea/charserverhandler.h b/src/net/ea/charserverhandler.h
index 83da865a1..01012353f 100644
--- a/src/net/ea/charserverhandler.h
+++ b/src/net/ea/charserverhandler.h
@@ -38,8 +38,6 @@ class Network;
 class CharServerHandler : public Net::CharServerHandler
 {
     public:
-        CharServerHandler();
-
         A_DELETE_COPY(CharServerHandler)
 
         virtual void setCharSelectDialog(CharSelectDialog *const window)
@@ -85,6 +83,8 @@ class CharServerHandler : public Net::CharServerHandler
         virtual void clear() override;
 
     protected:
+        CharServerHandler();
+
         virtual void readPlayerData(Net::MessageIn &msg,
                                     Net::Character *const character,
                                     const bool withColors) const = 0;
diff --git a/src/net/ea/inventoryhandler.h b/src/net/ea/inventoryhandler.h
index eade97b6e..fa255e213 100644
--- a/src/net/ea/inventoryhandler.h
+++ b/src/net/ea/inventoryhandler.h
@@ -146,8 +146,6 @@ class InventoryHandler : public Net::InventoryHandler
             CART
         };
 
-        InventoryHandler();
-
         A_DELETE_COPY(InventoryHandler)
 
         ~InventoryHandler();
@@ -208,6 +206,8 @@ class InventoryHandler : public Net::InventoryHandler
         { return mStorage; }
 
     protected:
+        InventoryHandler();
+
         EquipBackend mEquips;
         InventoryItems mInventoryItems;
         Inventory *mStorage;
diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h
index e6dadac2e..05d819ffe 100644
--- a/src/net/ea/loginhandler.h
+++ b/src/net/ea/loginhandler.h
@@ -38,8 +38,6 @@ namespace Ea
 class LoginHandler : public Net::LoginHandler
 {
     public:
-        LoginHandler();
-
         A_DELETE_COPY(LoginHandler)
 
         ~LoginHandler();
@@ -92,6 +90,8 @@ class LoginHandler : public Net::LoginHandler
         virtual void processServerVersion(Net::MessageIn &msg) = 0;
 
     protected:
+        LoginHandler();
+
         virtual void sendLoginRegister(const std::string &username,
                                        const std::string &password,
                                        const std::string &email) const = 0;
diff --git a/src/net/ea/npchandler.h b/src/net/ea/npchandler.h
index 714bc594c..21fd35629 100644
--- a/src/net/ea/npchandler.h
+++ b/src/net/ea/npchandler.h
@@ -34,8 +34,6 @@ namespace Ea
 class NpcHandler : public Net::NpcHandler
 {
     public:
-        NpcHandler();
-
         A_DELETE_COPY(NpcHandler)
 
         void sendLetter(int npcId, const std::string &recipient,
@@ -61,6 +59,8 @@ class NpcHandler : public Net::NpcHandler
         void processNpcStrInput(Net::MessageIn &msg);
 
     protected:
+        NpcHandler();
+
         NpcDialog *mDialog;
 };
 
diff --git a/src/net/loginhandler.h b/src/net/loginhandler.h
index d3bbdddb7..019e9b846 100644
--- a/src/net/loginhandler.h
+++ b/src/net/loginhandler.h
@@ -103,15 +103,15 @@ class LoginHandler
 
         virtual void clearWorlds() = 0;
 
+        virtual ~LoginHandler()
+        { }
+
+    protected:
         LoginHandler() :
             mServer()
         {
         }
 
-        virtual ~LoginHandler()
-        { }
-
-    protected:
         ServerInfo mServer;
 };
 
diff --git a/src/net/messagehandler.h b/src/net/messagehandler.h
index c438ed679..497934bd8 100644
--- a/src/net/messagehandler.h
+++ b/src/net/messagehandler.h
@@ -42,15 +42,17 @@ class MessageHandler
 
         virtual void handleMessage(MessageIn &msg) = 0;
 
-        MessageHandler() :
-            handledMessages(nullptr)
-        {
-        }
 
         A_DELETE_COPY(MessageHandler)
 
         virtual ~MessageHandler()
         { }
+
+    protected:
+        MessageHandler() :
+            handledMessages(nullptr)
+        {
+        }
 };
 
 }  // namespace Net
diff --git a/src/render/graphics.h b/src/render/graphics.h
index 12df83aef..fa2416750 100644
--- a/src/render/graphics.h
+++ b/src/render/graphics.h
@@ -97,10 +97,6 @@ class ImageRect final
 class Graphics : public gcn::Graphics
 {
     public:
-        /**
-         * Constructor.
-         */
-        Graphics();
 
         A_DELETE_COPY(Graphics)
 
@@ -379,6 +375,11 @@ class Graphics : public gcn::Graphics
         int mHeight;
 
     protected:
+        /**
+         * Constructor.
+         */
+        Graphics();
+
         /**
          * Blits an image onto the screen.
          *
diff --git a/src/resources/imagehelper.h b/src/resources/imagehelper.h
index b09d21d4a..b22a609a6 100644
--- a/src/resources/imagehelper.h
+++ b/src/resources/imagehelper.h
@@ -43,9 +43,6 @@ class ImageHelper
     friend class Image;
 
     public:
-        ImageHelper()
-        { }
-
         A_DELETE_COPY(ImageHelper)
 
         virtual ~ImageHelper()
@@ -102,6 +99,9 @@ class ImageHelper
         { return mUseOpenGL; }
 
     protected:
+        ImageHelper()
+        { }
+
         static bool mEnableAlpha;
         static RenderType mUseOpenGL;
 };
diff --git a/src/sprite.h b/src/sprite.h
index 8fb78b248..3ec3fe00d 100644
--- a/src/sprite.h
+++ b/src/sprite.h
@@ -32,11 +32,6 @@ class Image;
 class Sprite
 {
     public:
-        Sprite() :
-            mAlpha()
-        {
-        }
-
         virtual ~Sprite()
         { }
 
@@ -122,6 +117,11 @@ class Sprite
         virtual bool updateNumber(const unsigned num) = 0;
 
     protected:
+        Sprite() :
+            mAlpha()
+        {
+        }
+
         float mAlpha;                  /**< The alpha opacity used to draw */
 };
 
-- 
cgit v1.2.3-70-g09d2