From 499a0bc5b9c7d57c227eaf16d11b14865bd066d5 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Sat, 31 May 2014 16:08:42 +0300
Subject: Add missing notfinal/final to classes.

---
 src/being/actorsprite.h                | 2 +-
 src/being/being.h                      | 3 ++-
 src/being/compoundsprite.h             | 2 +-
 src/gui/models/avatarlistmodel.h       | 2 +-
 src/gui/models/colormodel.h            | 2 +-
 src/gui/models/extendedlistmodel.h     | 2 +-
 src/gui/models/extendednamesmodel.h    | 2 +-
 src/gui/models/namesmodel.h            | 2 +-
 src/gui/models/typelistmodel.h         | 2 +-
 src/gui/widgets/basiccontainer.h       | 4 ++--
 src/gui/widgets/characterviewbase.h    | 4 ++--
 src/gui/widgets/container.h            | 2 +-
 src/gui/widgets/listbox.h              | 6 +++---
 src/gui/widgets/popup.h                | 6 +++---
 src/gui/widgets/setupitem.h            | 6 +++---
 src/gui/widgets/shortcutcontainer.h    | 6 +++---
 src/gui/widgets/statuswindowattrs.h    | 2 +-
 src/gui/widgets/tabs/chattab.h         | 2 +-
 src/gui/widgets/tabs/debugwindowtabs.h | 2 +-
 src/gui/widgets/tabs/setuptab.h        | 6 +++---
 src/gui/widgets/tabs/setuptabscroll.h  | 2 +-
 src/gui/widgets/tabs/socialtab.h       | 2 +-
 src/gui/widgets/tabs/tab.h             | 6 +++---
 src/gui/widgets/textfield.h            | 8 ++++----
 src/gui/widgets/widget.h               | 2 +-
 src/gui/widgets/widgetgroup.h          | 6 +++---
 src/gui/widgets/window.h               | 6 +++---
 src/gui/widgets/windowcontainer.h      | 2 +-
 src/gui/windows/confirmdialog.h        | 4 ++--
 src/listeners/playerlistener.h         | 2 +-
 src/net/ea/adminhandler.h              | 2 +-
 src/net/ea/beinghandler.h              | 2 +-
 src/net/ea/buysellhandler.h            | 2 +-
 src/net/ea/charserverhandler.h         | 2 +-
 src/net/ea/chathandler.h               | 2 +-
 src/net/ea/equipbackend.h              | 2 +-
 src/net/ea/gamehandler.h               | 2 +-
 src/net/ea/gui/guildtab.h              | 4 ++--
 src/net/ea/gui/partytab.h              | 4 ++--
 src/net/ea/guildhandler.h              | 2 +-
 src/net/ea/inventoryhandler.h          | 2 +-
 src/net/ea/loginhandler.cpp            | 2 ++
 src/net/ea/loginhandler.h              | 2 +-
 src/net/ea/npchandler.h                | 2 +-
 src/net/ea/partyhandler.h              | 2 +-
 src/net/ea/playerhandler.h             | 2 +-
 src/net/ea/skillhandler.h              | 2 +-
 src/net/ea/token.h                     | 4 ++--
 src/net/ea/tradehandler.h              | 2 +-
 src/net/eathena/gui/guildtab.h         | 2 +-
 src/net/eathena/gui/partytab.h         | 2 +-
 src/net/eathena/messagehandler.h       | 2 +-
 src/net/messagein.h                    | 2 +-
 src/net/tmwa/gui/guildtab.h            | 2 +-
 src/net/tmwa/messagehandler.h          | 2 +-
 src/particle/imageparticle.h           | 2 +-
 src/particle/particle.h                | 2 +-
 src/resources/image.h                  | 2 +-
 src/resources/imageset.h               | 2 +-
 src/utils/dtor.h                       | 4 +++-
 60 files changed, 89 insertions(+), 84 deletions(-)

diff --git a/src/being/actorsprite.h b/src/being/actorsprite.h
index 7447675a1..7cffa3213 100644
--- a/src/being/actorsprite.h
+++ b/src/being/actorsprite.h
@@ -45,7 +45,7 @@ class ActorSpriteListener;
 
 struct SpriteDisplay;
 
-class ActorSprite : public CompoundSprite, public Actor
+class ActorSprite notfinal : public CompoundSprite, public Actor
 {
 public:
     explicit ActorSprite(const int id);
diff --git a/src/being/being.h b/src/being/being.h
index 65d661142..40c9af4ba 100644
--- a/src/being/being.h
+++ b/src/being/being.h
@@ -81,7 +81,8 @@ struct NextSoundInfo
     int time;
 };
 
-class Being : public ActorSprite, public ConfigListener
+class Being notfinal : public ActorSprite,
+                       public ConfigListener
 {
     public:
         friend class BeingEquipBackend;
diff --git a/src/being/compoundsprite.h b/src/being/compoundsprite.h
index 05559045e..02c057ef7 100644
--- a/src/being/compoundsprite.h
+++ b/src/being/compoundsprite.h
@@ -32,7 +32,7 @@
 class CompoundItem;
 class Image;
 
-class CompoundSprite : public Sprite
+class CompoundSprite notfinal : public Sprite
 {
 public:
     typedef std::vector<Sprite*>::iterator SpriteIterator;
diff --git a/src/gui/models/avatarlistmodel.h b/src/gui/models/avatarlistmodel.h
index 2bbd64878..b6630ee47 100644
--- a/src/gui/models/avatarlistmodel.h
+++ b/src/gui/models/avatarlistmodel.h
@@ -28,7 +28,7 @@
 
 #include <string>
 
-class AvatarListModel : public ListModel
+class AvatarListModel notfinal : public ListModel
 {
     public:
         virtual Avatar *getAvatarAt(const int i) A_WARN_UNUSED = 0;
diff --git a/src/gui/models/colormodel.h b/src/gui/models/colormodel.h
index 068da0dd9..058eed4eb 100644
--- a/src/gui/models/colormodel.h
+++ b/src/gui/models/colormodel.h
@@ -32,7 +32,7 @@
 class Color;
 class Widget2;
 
-class ColorModel : public ListModel
+class ColorModel final : public ListModel
 {
     public:
         ColorModel();
diff --git a/src/gui/models/extendedlistmodel.h b/src/gui/models/extendedlistmodel.h
index 5d859e781..4edfebc3b 100644
--- a/src/gui/models/extendedlistmodel.h
+++ b/src/gui/models/extendedlistmodel.h
@@ -25,7 +25,7 @@
 
 #include "gui/models/listmodel.h"
 
-class ExtendedListModel : public ListModel
+class ExtendedListModel notfinal : public ListModel
 {
     public:
         virtual const Image *getImageAt(int i) A_WARN_UNUSED = 0;
diff --git a/src/gui/models/extendednamesmodel.h b/src/gui/models/extendednamesmodel.h
index 383a93951..7acaf65c6 100644
--- a/src/gui/models/extendednamesmodel.h
+++ b/src/gui/models/extendednamesmodel.h
@@ -25,7 +25,7 @@
 
 #include "gui/models/extendedlistmodel.h"
 
-class ExtendedNamesModel : public ExtendedListModel
+class ExtendedNamesModel notfinal : public ExtendedListModel
 {
     public:
         ExtendedNamesModel();
diff --git a/src/gui/models/namesmodel.h b/src/gui/models/namesmodel.h
index 96d16de36..59bb947e9 100644
--- a/src/gui/models/namesmodel.h
+++ b/src/gui/models/namesmodel.h
@@ -27,7 +27,7 @@
 
 #include "localconsts.h"
 
-class NamesModel : public ListModel
+class NamesModel notfinal : public ListModel
 {
     public:
         NamesModel();
diff --git a/src/gui/models/typelistmodel.h b/src/gui/models/typelistmodel.h
index b7de67cff..2db290e70 100644
--- a/src/gui/models/typelistmodel.h
+++ b/src/gui/models/typelistmodel.h
@@ -27,7 +27,7 @@
 /**
  * Server Type List Model
  */
-class TypeListModel : public ListModel
+class TypeListModel final : public ListModel
 {
     public:
         TypeListModel()
diff --git a/src/gui/widgets/basiccontainer.h b/src/gui/widgets/basiccontainer.h
index 8a5d7b9a4..85067daff 100644
--- a/src/gui/widgets/basiccontainer.h
+++ b/src/gui/widgets/basiccontainer.h
@@ -78,8 +78,8 @@
   * @see Container
   * @since 0.6.0
   */
-class BasicContainer : public Widget,
-                       public DeathListener
+class BasicContainer notfinal : public Widget,
+                                public DeathListener
 {
     public:
         explicit BasicContainer(const Widget2 *const widget) :
diff --git a/src/gui/widgets/characterviewbase.h b/src/gui/widgets/characterviewbase.h
index 16b6c3e0d..6c0fd9434 100644
--- a/src/gui/widgets/characterviewbase.h
+++ b/src/gui/widgets/characterviewbase.h
@@ -29,8 +29,8 @@
 
 #include "localconsts.h"
 
-class CharacterViewBase : public Container,
-                          public ActionListener
+class CharacterViewBase notfinal : public Container,
+                                   public ActionListener
 {
     public:
         A_DELETE_COPY(CharacterViewBase)
diff --git a/src/gui/widgets/container.h b/src/gui/widgets/container.h
index 262d7327a..7252a0ed7 100644
--- a/src/gui/widgets/container.h
+++ b/src/gui/widgets/container.h
@@ -34,7 +34,7 @@
  *
  * This container is also non-opaque by default.
  */
-class Container : public BasicContainer2
+class Container notfinal : public BasicContainer2
 {
     public:
         explicit Container(const Widget2 *const widget);
diff --git a/src/gui/widgets/listbox.h b/src/gui/widgets/listbox.h
index e425b48ca..d6cd12ddc 100644
--- a/src/gui/widgets/listbox.h
+++ b/src/gui/widgets/listbox.h
@@ -89,9 +89,9 @@ class Widget2;
  *
  * \ingroup GUI
  */
-class ListBox : public Widget,
-                public MouseListener,
-                public KeyListener
+class ListBox notfinal : public Widget,
+                         public MouseListener,
+                         public KeyListener
 {
     public:
         /**
diff --git a/src/gui/widgets/popup.h b/src/gui/widgets/popup.h
index 5067b4658..eb26dd4b3 100644
--- a/src/gui/widgets/popup.h
+++ b/src/gui/widgets/popup.h
@@ -45,9 +45,9 @@ class WindowContainer;
  *
  * \ingroup GUI
  */
-class Popup : public Container,
-              public MouseListener,
-              public WidgetListener
+class Popup notfinal : public Container,
+                       public MouseListener,
+                       public WidgetListener
 {
     public:
         /**
diff --git a/src/gui/widgets/setupitem.h b/src/gui/widgets/setupitem.h
index 03681ad90..849ca5fd1 100644
--- a/src/gui/widgets/setupitem.h
+++ b/src/gui/widgets/setupitem.h
@@ -42,8 +42,8 @@ class Slider;
 class SliderList;
 class TextField;
 
-class SetupItem : public ActionListener,
-                  public Widget2
+class SetupItem notfinal : public ActionListener,
+                           public Widget2
 {
     public:
         enum
@@ -462,7 +462,7 @@ class SetupItemSlider2 final : public SetupItem
         bool mDoNotAlign;
 };
 
-class SetupItemSliderList : public SetupItem
+class SetupItemSliderList notfinal : public SetupItem
 {
     public:
         A_DELETE_COPY(SetupItemSliderList)
diff --git a/src/gui/widgets/shortcutcontainer.h b/src/gui/widgets/shortcutcontainer.h
index d4d4ac4bf..6ef3af452 100644
--- a/src/gui/widgets/shortcutcontainer.h
+++ b/src/gui/widgets/shortcutcontainer.h
@@ -36,9 +36,9 @@ class ImageCollection;
  *
  * \ingroup GUI
  */
-class ShortcutContainer : public Widget,
-                          public WidgetListener,
-                          public MouseListener
+class ShortcutContainer notfinal : public Widget,
+                                   public WidgetListener,
+                                   public MouseListener
 {
     public:
         A_DELETE_COPY(ShortcutContainer)
diff --git a/src/gui/widgets/statuswindowattrs.h b/src/gui/widgets/statuswindowattrs.h
index 1cc755907..93797a8c1 100644
--- a/src/gui/widgets/statuswindowattrs.h
+++ b/src/gui/widgets/statuswindowattrs.h
@@ -36,7 +36,7 @@
 class Button;
 class LayoutHelper;
 
-class AttrDisplay : public Container
+class AttrDisplay notfinal : public Container
 {
     public:
         enum Type
diff --git a/src/gui/widgets/tabs/chattab.h b/src/gui/widgets/tabs/chattab.h
index b22074623..6f0f042b7 100644
--- a/src/gui/widgets/tabs/chattab.h
+++ b/src/gui/widgets/tabs/chattab.h
@@ -36,7 +36,7 @@ class ScrollArea;
 /**
  * A tab for the chat window. This is special to ease chat handling.
  */
-class ChatTab : public Tab
+class ChatTab notfinal : public Tab
 {
     public:
         /**
diff --git a/src/gui/widgets/tabs/debugwindowtabs.h b/src/gui/widgets/tabs/debugwindowtabs.h
index 4230bc09a..d44fe8dc4 100644
--- a/src/gui/widgets/tabs/debugwindowtabs.h
+++ b/src/gui/widgets/tabs/debugwindowtabs.h
@@ -27,7 +27,7 @@
 
 class Label;
 
-class DebugTab : public Container
+class DebugTab notfinal : public Container
 {
     friend class DebugWindow;
 
diff --git a/src/gui/widgets/tabs/setuptab.h b/src/gui/widgets/tabs/setuptab.h
index 4d6049b6a..2f03e0e92 100644
--- a/src/gui/widgets/tabs/setuptab.h
+++ b/src/gui/widgets/tabs/setuptab.h
@@ -35,9 +35,9 @@
 /**
  * A container for the contents of a tab in the setup window.
  */
-class SetupTab : public Container,
-                 public ActionListener,
-                 public WidgetListener
+class SetupTab notfinal : public Container,
+                          public ActionListener,
+                          public WidgetListener
 {
     public:
         A_DELETE_COPY(SetupTab)
diff --git a/src/gui/widgets/tabs/setuptabscroll.h b/src/gui/widgets/tabs/setuptabscroll.h
index f7aa628c9..dec56c13e 100644
--- a/src/gui/widgets/tabs/setuptabscroll.h
+++ b/src/gui/widgets/tabs/setuptabscroll.h
@@ -32,7 +32,7 @@ class SetupItem;
 class ScrollArea;
 class VertContainer;
 
-class SetupTabScroll : public SetupTab
+class SetupTabScroll notfinal : public SetupTab
 {
     public:
         explicit SetupTabScroll(const Widget2 *const widget);
diff --git a/src/gui/widgets/tabs/socialtab.h b/src/gui/widgets/tabs/socialtab.h
index 31fb5d938..57bf03d95 100644
--- a/src/gui/widgets/tabs/socialtab.h
+++ b/src/gui/widgets/tabs/socialtab.h
@@ -36,7 +36,7 @@
 
 class AvatarListModel;
 
-class SocialTab : public Tab
+class SocialTab notfinal : public Tab
 {
     public:
         A_DELETE_COPY(SocialTab)
diff --git a/src/gui/widgets/tabs/tab.h b/src/gui/widgets/tabs/tab.h
index 4a88a5400..610181471 100644
--- a/src/gui/widgets/tabs/tab.h
+++ b/src/gui/widgets/tabs/tab.h
@@ -81,9 +81,9 @@ class TabbedArea;
 /**
  * A tab, the same as the Guichan tab in 0.8, but extended
  */
-class Tab : public BasicContainer,
-            public MouseListener,
-            public WidgetListener
+class Tab notfinal : public BasicContainer,
+                     public MouseListener,
+                     public WidgetListener
 {
     public:
         explicit Tab(const Widget2 *const widget);
diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h
index 1af5978b1..d2cdcd473 100644
--- a/src/gui/widgets/textfield.h
+++ b/src/gui/widgets/textfield.h
@@ -81,10 +81,10 @@ class PopupMenu;
  *
  * \ingroup GUI
  */
-class TextField : public Widget,
-                  public FocusListener,
-                  public KeyListener,
-                  public MouseListener
+class TextField notfinal : public Widget,
+                           public FocusListener,
+                           public KeyListener,
+                           public MouseListener
 {
     public:
         /**
diff --git a/src/gui/widgets/widget.h b/src/gui/widgets/widget.h
index f3e2fdb66..8109d142d 100644
--- a/src/gui/widgets/widget.h
+++ b/src/gui/widgets/widget.h
@@ -96,7 +96,7 @@ class WidgetListener;
   * @author Per Larsson.
   * @since 0.1.0
   */
-class Widget : public Widget2
+class Widget notfinal : public Widget2
 {
     public:
         friend class BasicContainer;
diff --git a/src/gui/widgets/widgetgroup.h b/src/gui/widgets/widgetgroup.h
index 051234cda..384eab284 100644
--- a/src/gui/widgets/widgetgroup.h
+++ b/src/gui/widgets/widgetgroup.h
@@ -28,9 +28,9 @@
 
 #include "localconsts.h"
 
-class WidgetGroup : public Container,
-                    public WidgetListener,
-                    public ActionListener
+class WidgetGroup notfinal : public Container,
+                             public WidgetListener,
+                             public ActionListener
 {
     public:
         A_DELETE_COPY(WidgetGroup)
diff --git a/src/gui/widgets/window.h b/src/gui/widgets/window.h
index fea0883cf..4fedf69ac 100644
--- a/src/gui/widgets/window.h
+++ b/src/gui/widgets/window.h
@@ -90,9 +90,9 @@ class WindowContainer;
  *
  * \ingroup GUI
  */
-class Window : public BasicContainer2,
-               public MouseListener,
-               private WidgetListener
+class Window notfinal : public BasicContainer2,
+                        public MouseListener,
+                        public WidgetListener
 {
     public:
         /**
diff --git a/src/gui/widgets/windowcontainer.h b/src/gui/widgets/windowcontainer.h
index a822fadb5..9b4328128 100644
--- a/src/gui/widgets/windowcontainer.h
+++ b/src/gui/widgets/windowcontainer.h
@@ -33,7 +33,7 @@
  *
  * \ingroup GUI
  */
-class WindowContainer : public Container
+class WindowContainer notfinal : public Container
 {
     public:
         explicit WindowContainer(const Widget2 *const widget);
diff --git a/src/gui/windows/confirmdialog.h b/src/gui/windows/confirmdialog.h
index 0d9f25d38..56054ee19 100644
--- a/src/gui/windows/confirmdialog.h
+++ b/src/gui/windows/confirmdialog.h
@@ -38,8 +38,8 @@ class TextBox;
  *
  * \ingroup GUI
  */
-class ConfirmDialog : public Window,
-                      public ActionListener
+class ConfirmDialog notfinal : public Window,
+                               public ActionListener
 {
     public:
         /**
diff --git a/src/listeners/playerlistener.h b/src/listeners/playerlistener.h
index 85623fbd5..b0d8b9344 100644
--- a/src/listeners/playerlistener.h
+++ b/src/listeners/playerlistener.h
@@ -29,7 +29,7 @@
 
 class TextDialog;
 
-class PlayerListener : public ActionListener
+class PlayerListener final : public ActionListener
 {
     public:
         PlayerListener();
diff --git a/src/net/ea/adminhandler.h b/src/net/ea/adminhandler.h
index 5ec72e912..6bf7c4b13 100644
--- a/src/net/ea/adminhandler.h
+++ b/src/net/ea/adminhandler.h
@@ -30,7 +30,7 @@
 namespace Ea
 {
 
-class AdminHandler : public Net::AdminHandler
+class AdminHandler notfinal : public Net::AdminHandler
 {
     public:
         AdminHandler()
diff --git a/src/net/ea/beinghandler.h b/src/net/ea/beinghandler.h
index 4d59c2f48..b460ae358 100644
--- a/src/net/ea/beinghandler.h
+++ b/src/net/ea/beinghandler.h
@@ -28,7 +28,7 @@
 namespace Ea
 {
 
-class BeingHandler : public Net::BeingHandler
+class BeingHandler notfinal : public Net::BeingHandler
 {
     public:
         A_DELETE_COPY(BeingHandler)
diff --git a/src/net/ea/buysellhandler.h b/src/net/ea/buysellhandler.h
index 0aa984d43..75e78a251 100644
--- a/src/net/ea/buysellhandler.h
+++ b/src/net/ea/buysellhandler.h
@@ -30,7 +30,7 @@ class BuyDialog;
 namespace Ea
 {
 
-class BuySellHandler : public Net::BuySellHandler
+class BuySellHandler notfinal : public Net::BuySellHandler
 {
     public:
         BuySellHandler();
diff --git a/src/net/ea/charserverhandler.h b/src/net/ea/charserverhandler.h
index af6aafa9b..ffbb97bc8 100644
--- a/src/net/ea/charserverhandler.h
+++ b/src/net/ea/charserverhandler.h
@@ -40,7 +40,7 @@ class Network;
 /**
  * Deals with incoming messages from the character server.
  */
-class CharServerHandler : public Net::CharServerHandler
+class CharServerHandler notfinal : public Net::CharServerHandler
 {
     public:
         A_DELETE_COPY(CharServerHandler)
diff --git a/src/net/ea/chathandler.h b/src/net/ea/chathandler.h
index 237abf10a..708d79440 100644
--- a/src/net/ea/chathandler.h
+++ b/src/net/ea/chathandler.h
@@ -35,7 +35,7 @@ namespace Net
 namespace Ea
 {
 
-class ChatHandler : public Net::ChatHandler
+class ChatHandler notfinal : public Net::ChatHandler
 {
     public:
         ChatHandler();
diff --git a/src/net/ea/equipbackend.h b/src/net/ea/equipbackend.h
index 5a557eaa6..fb06cf7e2 100644
--- a/src/net/ea/equipbackend.h
+++ b/src/net/ea/equipbackend.h
@@ -33,7 +33,7 @@
 namespace Ea
 {
 
-class EquipBackend : public Equipment::Backend
+class EquipBackend final : public Equipment::Backend
 {
     public:
         EquipBackend()
diff --git a/src/net/ea/gamehandler.h b/src/net/ea/gamehandler.h
index 4a0624be0..a10b244c7 100644
--- a/src/net/ea/gamehandler.h
+++ b/src/net/ea/gamehandler.h
@@ -33,7 +33,7 @@ namespace Net
 namespace Ea
 {
 
-class GameHandler : public Net::GameHandler
+class GameHandler notfinal : public Net::GameHandler
 {
     public:
         GameHandler();
diff --git a/src/net/ea/gui/guildtab.h b/src/net/ea/gui/guildtab.h
index c3936f348..f9bc24b7a 100644
--- a/src/net/ea/gui/guildtab.h
+++ b/src/net/ea/gui/guildtab.h
@@ -32,8 +32,8 @@ namespace Ea
 /**
  * A tab for a guild chat channel.
  */
-class GuildTab : public ChatTab,
-                 public ConfigListener
+class GuildTab notfinal : public ChatTab,
+                          public ConfigListener
 {
     public:
         explicit GuildTab(const Widget2 *const widget);
diff --git a/src/net/ea/gui/partytab.h b/src/net/ea/gui/partytab.h
index 1a08d0954..7a82b1ae0 100644
--- a/src/net/ea/gui/partytab.h
+++ b/src/net/ea/gui/partytab.h
@@ -32,8 +32,8 @@ namespace Ea
 /**
  * A tab for a party chat channel.
  */
-class PartyTab : public ChatTab,
-                 public ConfigListener
+class PartyTab notfinal : public ChatTab,
+                          public ConfigListener
 {
     public:
         explicit PartyTab(const Widget2 *const widget);
diff --git a/src/net/ea/guildhandler.h b/src/net/ea/guildhandler.h
index e8bec6a09..48e5f325f 100644
--- a/src/net/ea/guildhandler.h
+++ b/src/net/ea/guildhandler.h
@@ -33,7 +33,7 @@ namespace Ea
 {
 class GuildTab;
 
-class GuildHandler : public Net::GuildHandler
+class GuildHandler notfinal : public Net::GuildHandler
 {
     public:
         GuildHandler();
diff --git a/src/net/ea/inventoryhandler.h b/src/net/ea/inventoryhandler.h
index e26878f65..76ceec765 100644
--- a/src/net/ea/inventoryhandler.h
+++ b/src/net/ea/inventoryhandler.h
@@ -44,7 +44,7 @@ namespace Ea
 
 typedef std::vector<InventoryItem> InventoryItems;
 
-class InventoryHandler : public Net::InventoryHandler
+class InventoryHandler notfinal : public Net::InventoryHandler
 {
     public:
         enum
diff --git a/src/net/ea/loginhandler.cpp b/src/net/ea/loginhandler.cpp
index ecc51bfeb..451850430 100644
--- a/src/net/ea/loginhandler.cpp
+++ b/src/net/ea/loginhandler.cpp
@@ -27,6 +27,8 @@
 #include "logger.h"
 #include "settings.h"
 
+#include "being/being.h"
+
 #include "gui/windows/logindialog.h"
 
 #include "utils/dtor.h"
diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h
index 053e8500a..6040e72fd 100644
--- a/src/net/ea/loginhandler.h
+++ b/src/net/ea/loginhandler.h
@@ -41,7 +41,7 @@ namespace Net
 namespace Ea
 {
 
-class LoginHandler : public Net::LoginHandler
+class LoginHandler notfinal : public Net::LoginHandler
 {
     public:
         A_DELETE_COPY(LoginHandler)
diff --git a/src/net/ea/npchandler.h b/src/net/ea/npchandler.h
index 07c281587..d6986a219 100644
--- a/src/net/ea/npchandler.h
+++ b/src/net/ea/npchandler.h
@@ -37,7 +37,7 @@ namespace Net
 namespace Ea
 {
 
-class NpcHandler : public Net::NpcHandler
+class NpcHandler notfinal : public Net::NpcHandler
 {
     public:
         A_DELETE_COPY(NpcHandler)
diff --git a/src/net/ea/partyhandler.h b/src/net/ea/partyhandler.h
index 61aa49bfa..11eef00b6 100644
--- a/src/net/ea/partyhandler.h
+++ b/src/net/ea/partyhandler.h
@@ -35,7 +35,7 @@ namespace Ea
 {
 class PartyTab;
 
-class PartyHandler : public Net::PartyHandler
+class PartyHandler notfinal : public Net::PartyHandler
 {
     public:
         PartyHandler();
diff --git a/src/net/ea/playerhandler.h b/src/net/ea/playerhandler.h
index 087627f92..0c8afd72e 100644
--- a/src/net/ea/playerhandler.h
+++ b/src/net/ea/playerhandler.h
@@ -33,7 +33,7 @@ namespace Net
 namespace Ea
 {
 
-class PlayerHandler : public Net::PlayerHandler
+class PlayerHandler notfinal : public Net::PlayerHandler
 {
     public:
         PlayerHandler();
diff --git a/src/net/ea/skillhandler.h b/src/net/ea/skillhandler.h
index 484ca6878..37ce90cbb 100644
--- a/src/net/ea/skillhandler.h
+++ b/src/net/ea/skillhandler.h
@@ -35,7 +35,7 @@ namespace Net
 namespace Ea
 {
 
-class SkillHandler : public Net::SkillHandler
+class SkillHandler notfinal : public Net::SkillHandler
 {
     public:
         SkillHandler();
diff --git a/src/net/ea/token.h b/src/net/ea/token.h
index 35aadd02c..dd8a18d17 100644
--- a/src/net/ea/token.h
+++ b/src/net/ea/token.h
@@ -20,12 +20,12 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "being/being.h"
+#include "being/gender.h"
 
 #ifndef NET_EA_TOKEN_H
 #define NET_EA_TOKEN_H
 
-struct Token
+struct Token final
 {
     int account_ID;
     int session_ID1;
diff --git a/src/net/ea/tradehandler.h b/src/net/ea/tradehandler.h
index d4c9510b8..a11941d5d 100644
--- a/src/net/ea/tradehandler.h
+++ b/src/net/ea/tradehandler.h
@@ -33,7 +33,7 @@ namespace Net
 namespace Ea
 {
 
-class TradeHandler : public Net::TradeHandler
+class TradeHandler notfinal : public Net::TradeHandler
 {
     public:
         TradeHandler();
diff --git a/src/net/eathena/gui/guildtab.h b/src/net/eathena/gui/guildtab.h
index 572ea4bac..30dd63352 100644
--- a/src/net/eathena/gui/guildtab.h
+++ b/src/net/eathena/gui/guildtab.h
@@ -31,7 +31,7 @@ namespace EAthena
 /**
  * A tab for a guild chat channel.
  */
-class GuildTab : public Ea::GuildTab
+class GuildTab final : public Ea::GuildTab
 {
     public:
         explicit GuildTab(const Widget2 *const widget);
diff --git a/src/net/eathena/gui/partytab.h b/src/net/eathena/gui/partytab.h
index 31dc26787..2dfd333fb 100644
--- a/src/net/eathena/gui/partytab.h
+++ b/src/net/eathena/gui/partytab.h
@@ -31,7 +31,7 @@ namespace EAthena
 /**
  * A tab for a party chat channel.
  */
-class PartyTab : public Ea::PartyTab
+class PartyTab final : public Ea::PartyTab
 {
     public:
         explicit PartyTab(const Widget2 *const widget);
diff --git a/src/net/eathena/messagehandler.h b/src/net/eathena/messagehandler.h
index 1b7f9e737..5cbf7e1d9 100644
--- a/src/net/eathena/messagehandler.h
+++ b/src/net/eathena/messagehandler.h
@@ -35,7 +35,7 @@ class Network;
 /**
  * \ingroup Network
  */
-class MessageHandler : public Net::MessageHandler
+class MessageHandler notfinal : public Net::MessageHandler
 {
     public:
         MessageHandler();
diff --git a/src/net/messagein.h b/src/net/messagein.h
index 7b2b2400b..7b7df919b 100644
--- a/src/net/messagein.h
+++ b/src/net/messagein.h
@@ -35,7 +35,7 @@ namespace Net
  *
  * \ingroup Network
  */
-class MessageIn
+class MessageIn notfinal
 {
     public:
         A_DELETE_COPY(MessageIn)
diff --git a/src/net/tmwa/gui/guildtab.h b/src/net/tmwa/gui/guildtab.h
index 25920c9f0..a10c592ec 100644
--- a/src/net/tmwa/gui/guildtab.h
+++ b/src/net/tmwa/gui/guildtab.h
@@ -31,7 +31,7 @@ namespace TmwAthena
 /**
  * A tab for a guild chat channel.
  */
-class GuildTab : public Ea::GuildTab
+class GuildTab final : public Ea::GuildTab
 {
     public:
         explicit GuildTab(const Widget2 *const widget);
diff --git a/src/net/tmwa/messagehandler.h b/src/net/tmwa/messagehandler.h
index ae57fcba5..9f87fd6b6 100644
--- a/src/net/tmwa/messagehandler.h
+++ b/src/net/tmwa/messagehandler.h
@@ -35,7 +35,7 @@ class Network;
 /**
  * \ingroup Network
  */
-class MessageHandler : public Net::MessageHandler
+class MessageHandler notfinal : public Net::MessageHandler
 {
     public:
         MessageHandler();
diff --git a/src/particle/imageparticle.h b/src/particle/imageparticle.h
index 3c3a17ebc..046775ebb 100644
--- a/src/particle/imageparticle.h
+++ b/src/particle/imageparticle.h
@@ -32,7 +32,7 @@ class Image;
 /**
  * A particle that uses an image for its visualization.
  */
-class ImageParticle : public Particle
+class ImageParticle notfinal : public Particle
 {
     public:
         /**
diff --git a/src/particle/particle.h b/src/particle/particle.h
index 491232b17..99d3aa365 100644
--- a/src/particle/particle.h
+++ b/src/particle/particle.h
@@ -45,7 +45,7 @@ typedef Emitters::const_iterator EmitterConstIterator;
 /**
  * A particle spawned by a ParticleEmitter.
  */
-class Particle : public Actor
+class Particle notfinal : public Actor
 {
     public:
         enum AliveStatus
diff --git a/src/resources/image.h b/src/resources/image.h
index 93c31f935..cd664cebb 100644
--- a/src/resources/image.h
+++ b/src/resources/image.h
@@ -51,7 +51,7 @@
 /**
  * Defines a class for loading and storing images.
  */
-class Image : public Resource
+class Image notfinal : public Resource
 {
     friend class CompoundSprite;
     friend class Graphics;
diff --git a/src/resources/imageset.h b/src/resources/imageset.h
index 3d89f48bb..d27cda0cf 100644
--- a/src/resources/imageset.h
+++ b/src/resources/imageset.h
@@ -34,7 +34,7 @@ class Image;
 /**
  * Stores a set of subimages originating from a single image.
  */
-class ImageSet : public Resource
+class ImageSet notfinal : public Resource
 {
     public:
         /**
diff --git a/src/utils/dtor.h b/src/utils/dtor.h
index c14ec41f6..52c44ead9 100644
--- a/src/utils/dtor.h
+++ b/src/utils/dtor.h
@@ -27,8 +27,10 @@
 #include <functional>
 #include <utility>
 
+#include "localconsts.h"
+
 template<typename T>
-struct dtor : public std::unary_function <T, void>
+struct dtor final : public std::unary_function <T, void>
 {
     void operator()(T &ptr)
     { delete ptr; }
-- 
cgit v1.2.3-70-g09d2