mirror of
https://github.com/anope/anope.git
synced 2026-07-06 18:23:12 +02:00
Mark types that have no inheritors as final.
This commit is contained in:
+3
-3
@@ -27,7 +27,7 @@ enum
|
||||
* backing each ChanAccess determines whether that ChanAccess has a given
|
||||
* privilege.
|
||||
*/
|
||||
struct CoreExport Privilege
|
||||
struct CoreExport Privilege final
|
||||
{
|
||||
Anope::string name;
|
||||
Anope::string desc;
|
||||
@@ -38,7 +38,7 @@ struct CoreExport Privilege
|
||||
bool operator==(const Privilege &other) const;
|
||||
};
|
||||
|
||||
class CoreExport PrivilegeManager
|
||||
class CoreExport PrivilegeManager final
|
||||
{
|
||||
static std::vector<Privilege> Privileges;
|
||||
public:
|
||||
@@ -135,7 +135,7 @@ public:
|
||||
/* A group of access entries. This is used commonly, for example with ChannelInfo::AccessFor,
|
||||
* to show what access a user has on a channel because users can match multiple access entries.
|
||||
*/
|
||||
class CoreExport AccessGroup
|
||||
class CoreExport AccessGroup final
|
||||
{
|
||||
public:
|
||||
/* access entries + paths */
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ extern CoreExport nickcoreid_map NickCoreIdList;
|
||||
/* A registered nickname.
|
||||
* It matters that Base is here before Extensible (it is inherited by Serializable)
|
||||
*/
|
||||
class CoreExport NickAlias
|
||||
class CoreExport NickAlias final
|
||||
: public Serializable
|
||||
, public Extensible
|
||||
{
|
||||
@@ -106,7 +106,7 @@ public:
|
||||
* account's display.
|
||||
* It matters that Base is here before Extensible (it is inherited by Serializable)
|
||||
*/
|
||||
class CoreExport NickCore
|
||||
class CoreExport NickCore final
|
||||
: public Serializable
|
||||
, public Extensible
|
||||
{
|
||||
|
||||
+7
-7
@@ -22,7 +22,7 @@ namespace Anope
|
||||
* allow us to only require one type of string everywhere that can be converted
|
||||
* at any time to a specific type of string.
|
||||
*/
|
||||
class CoreExport string
|
||||
class CoreExport string final
|
||||
{
|
||||
private:
|
||||
/**
|
||||
@@ -312,7 +312,7 @@ namespace Anope
|
||||
inline const string operator+(const char *_str, const string &str) { string tmp(_str); tmp += str; return tmp; }
|
||||
inline const string operator+(const std::string &_str, const string &str) { string tmp(_str); tmp += str; return tmp; }
|
||||
|
||||
struct hash_ci
|
||||
struct hash_ci final
|
||||
{
|
||||
inline size_t operator()(const string &s) const
|
||||
{
|
||||
@@ -320,7 +320,7 @@ namespace Anope
|
||||
}
|
||||
};
|
||||
|
||||
struct hash_cs
|
||||
struct hash_cs final
|
||||
{
|
||||
inline size_t operator()(const string &s) const
|
||||
{
|
||||
@@ -328,7 +328,7 @@ namespace Anope
|
||||
}
|
||||
};
|
||||
|
||||
struct compare
|
||||
struct compare final
|
||||
{
|
||||
inline bool operator()(const string &s1, const string &s2) const
|
||||
{
|
||||
@@ -628,7 +628,7 @@ public:
|
||||
|
||||
/** A derived form of sepstream, which separates on commas
|
||||
*/
|
||||
class commasepstream
|
||||
class commasepstream final
|
||||
: public sepstream
|
||||
{
|
||||
public:
|
||||
@@ -639,7 +639,7 @@ public:
|
||||
|
||||
/** A derived form of sepstream, which separates on spaces
|
||||
*/
|
||||
class spacesepstream
|
||||
class spacesepstream final
|
||||
: public sepstream
|
||||
{
|
||||
public:
|
||||
@@ -712,7 +712,7 @@ public:
|
||||
virtual ~ModuleException() noexcept = default;
|
||||
};
|
||||
|
||||
class CoreExport ConvertException
|
||||
class CoreExport ConvertException final
|
||||
: public CoreException
|
||||
{
|
||||
public:
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ typedef Anope::map<BotInfo *> botinfo_map;
|
||||
extern CoreExport Serialize::Checker<botinfo_map> BotListByNick, BotListByUID;
|
||||
|
||||
/* A service bot (NickServ, ChanServ, a BotServ bot, etc). */
|
||||
class CoreExport BotInfo
|
||||
class CoreExport BotInfo final
|
||||
: public User
|
||||
, public Serializable
|
||||
{
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ typedef Anope::hash_map<Channel *> channel_map;
|
||||
extern CoreExport channel_map ChannelList;
|
||||
|
||||
/* A user container, there is one of these per user per channel. */
|
||||
struct ChanUserContainer
|
||||
struct ChanUserContainer final
|
||||
: public Extensible
|
||||
{
|
||||
User *user;
|
||||
@@ -29,7 +29,7 @@ struct ChanUserContainer
|
||||
ChanUserContainer(User *u, Channel *c) : user(u), chan(c) { }
|
||||
};
|
||||
|
||||
class CoreExport Channel
|
||||
class CoreExport Channel final
|
||||
: public Base
|
||||
, public Extensible
|
||||
{
|
||||
|
||||
+3
-3
@@ -15,13 +15,13 @@
|
||||
#include "anope.h"
|
||||
#include "channels.h"
|
||||
|
||||
struct CommandGroup
|
||||
struct CommandGroup final
|
||||
{
|
||||
Anope::string name, description;
|
||||
};
|
||||
|
||||
/* Used in BotInfo::commands */
|
||||
struct CommandInfo
|
||||
struct CommandInfo final
|
||||
{
|
||||
typedef Anope::map<CommandInfo> map;
|
||||
|
||||
@@ -47,7 +47,7 @@ struct CoreExport CommandReply
|
||||
};
|
||||
|
||||
/* The source for a command */
|
||||
class CoreExport CommandSource
|
||||
class CoreExport CommandSource final
|
||||
{
|
||||
/* The nick executing the command */
|
||||
Anope::string nick;
|
||||
|
||||
+4
-4
@@ -78,7 +78,7 @@ namespace Configuration
|
||||
|
||||
/** Represents a configuration file
|
||||
*/
|
||||
class File
|
||||
class File final
|
||||
{
|
||||
Anope::string name;
|
||||
bool executable;
|
||||
@@ -98,7 +98,7 @@ namespace Configuration
|
||||
|
||||
struct Uplink;
|
||||
|
||||
struct CoreExport Conf
|
||||
struct CoreExport Conf final
|
||||
: Block
|
||||
{
|
||||
/* options:readtimeout */
|
||||
@@ -153,7 +153,7 @@ namespace Configuration
|
||||
const Block *GetCommand(CommandSource &);
|
||||
};
|
||||
|
||||
struct Uplink
|
||||
struct Uplink final
|
||||
{
|
||||
Anope::string host;
|
||||
unsigned port;
|
||||
@@ -172,7 +172,7 @@ namespace Configuration
|
||||
* be loaded. If this happens, the error message returned by ModuleException::GetReason will be displayed to the user
|
||||
* attempting to load the module, or dumped to the console if the ircd is currently loading for the first time.
|
||||
*/
|
||||
class CoreExport ConfigException
|
||||
class CoreExport ConfigException final
|
||||
: public CoreException
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -209,7 +209,7 @@ public:
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
struct ExtensibleRef
|
||||
struct ExtensibleRef final
|
||||
: ServiceReference<BaseExtensibleItem<T> >
|
||||
{
|
||||
ExtensibleRef(const Anope::string &n) : ServiceReference<BaseExtensibleItem<T> >("Extensible", n) { }
|
||||
|
||||
+3
-3
@@ -50,7 +50,7 @@ namespace Anope
|
||||
|
||||
/* rfc1459 case insensitive ctype, { = [, } = ], and | = \ */
|
||||
template<typename char_type>
|
||||
class rfc1459_ctype
|
||||
class rfc1459_ctype final
|
||||
: public ascii_ctype<char_type>
|
||||
{
|
||||
public:
|
||||
@@ -80,7 +80,7 @@ namespace ci
|
||||
* This class is used to implement ci::string, a case-insensitive, ASCII-
|
||||
* comparing string class.
|
||||
*/
|
||||
struct CoreExport ci_char_traits
|
||||
struct CoreExport ci_char_traits final
|
||||
: std::char_traits<char>
|
||||
{
|
||||
/** Check if two chars match.
|
||||
@@ -126,7 +126,7 @@ namespace ci
|
||||
*/
|
||||
typedef std::basic_string<char, ci_char_traits, std::allocator<char> > string;
|
||||
|
||||
struct CoreExport less
|
||||
struct CoreExport less final
|
||||
{
|
||||
/** Compare two Anope::strings as ci::strings and find which one is less
|
||||
* @param s1 The first string
|
||||
|
||||
+2
-2
@@ -60,7 +60,7 @@ public:
|
||||
|
||||
/** This class handles formatting LIST/VIEW replies.
|
||||
*/
|
||||
class CoreExport ListFormatter
|
||||
class CoreExport ListFormatter final
|
||||
{
|
||||
public:
|
||||
typedef std::map<Anope::string, Anope::string> ListEntry;
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
|
||||
/** This class handles formatting INFO replies
|
||||
*/
|
||||
class CoreExport InfoFormatter
|
||||
class CoreExport InfoFormatter final
|
||||
{
|
||||
NickCore *nc;
|
||||
std::vector<std::pair<Anope::string, Anope::string> > replies;
|
||||
|
||||
+3
-3
@@ -37,7 +37,7 @@ enum LogType
|
||||
LOG_DEBUG_4
|
||||
};
|
||||
|
||||
struct LogFile
|
||||
struct LogFile final
|
||||
{
|
||||
Anope::string filename;
|
||||
std::ofstream stream;
|
||||
@@ -48,7 +48,7 @@ struct LogFile
|
||||
};
|
||||
|
||||
/* Represents a single log message */
|
||||
class CoreExport Log
|
||||
class CoreExport Log final
|
||||
{
|
||||
public:
|
||||
/* Bot that should log this message */
|
||||
@@ -109,7 +109,7 @@ public:
|
||||
};
|
||||
|
||||
/* Configured in the configuration file, actually does the message logging */
|
||||
class CoreExport LogInfo
|
||||
class CoreExport LogInfo final
|
||||
{
|
||||
public:
|
||||
BotInfo *bot = nullptr;
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ namespace Mail
|
||||
extern CoreExport bool Validate(const Anope::string &email);
|
||||
|
||||
/* A email message being sent */
|
||||
class Message
|
||||
class Message final
|
||||
: public Thread
|
||||
{
|
||||
private:
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@
|
||||
#include "anope.h"
|
||||
#include "serialize.h"
|
||||
|
||||
class CoreExport Memo
|
||||
class CoreExport Memo final
|
||||
: public Serializable
|
||||
{
|
||||
public:
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
/* Memo info structures. Since both nicknames and channels can have memos,
|
||||
* we encapsulate memo data in a MemoInfo to make it easier to handle.
|
||||
*/
|
||||
struct CoreExport MemoInfo
|
||||
struct CoreExport MemoInfo final
|
||||
{
|
||||
int16_t memomax = 0;
|
||||
Serialize::Checker<std::vector<Memo *> > memos;
|
||||
|
||||
+3
-3
@@ -232,7 +232,7 @@ public:
|
||||
};
|
||||
|
||||
/* The status a user has on a channel (+v, +h, +o) etc */
|
||||
class CoreExport ChannelStatus
|
||||
class CoreExport ChannelStatus final
|
||||
{
|
||||
Anope::string modes;
|
||||
public:
|
||||
@@ -305,7 +305,7 @@ public:
|
||||
* This also contains a mode stacker that will combine multiple modes and set
|
||||
* them on a channel or user at once
|
||||
*/
|
||||
class CoreExport ModeManager
|
||||
class CoreExport ModeManager final
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -401,7 +401,7 @@ public:
|
||||
|
||||
/** Represents a mask set on a channel (b/e/I)
|
||||
*/
|
||||
class CoreExport Entry
|
||||
class CoreExport Entry final
|
||||
{
|
||||
Anope::string name;
|
||||
Anope::string mask;
|
||||
|
||||
+4
-4
@@ -162,7 +162,7 @@ enum
|
||||
};
|
||||
typedef unsigned short ModType;
|
||||
|
||||
struct ModuleVersionC
|
||||
struct ModuleVersionC final
|
||||
{
|
||||
int version_major, version_minor, version_patch;
|
||||
};
|
||||
@@ -170,7 +170,7 @@ struct ModuleVersionC
|
||||
/** Returned by Module::GetVersion, used to see what version of Anope
|
||||
* a module is compiled against.
|
||||
*/
|
||||
class ModuleVersion
|
||||
class ModuleVersion final
|
||||
{
|
||||
private:
|
||||
int version_major;
|
||||
@@ -196,7 +196,7 @@ public:
|
||||
int GetPatch() const;
|
||||
};
|
||||
|
||||
class CoreExport NotImplementedException
|
||||
class CoreExport NotImplementedException final
|
||||
: public CoreException
|
||||
{
|
||||
};
|
||||
@@ -1113,7 +1113,7 @@ enum Implementation
|
||||
|
||||
/** Used to manage modules.
|
||||
*/
|
||||
class CoreExport ModuleManager
|
||||
class CoreExport ModuleManager final
|
||||
{
|
||||
public:
|
||||
/** Event handler hooks.
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace DNS
|
||||
Question(const Anope::string &n, QueryType t, unsigned short c = 1) : name(n), type(t), qclass(c) { }
|
||||
inline bool operator==(const Question & other) const { return name == other.name && type == other.type && qclass == other.qclass; }
|
||||
|
||||
struct hash
|
||||
struct hash final
|
||||
{
|
||||
size_t operator()(const Question &q) const
|
||||
{
|
||||
@@ -88,7 +88,7 @@ namespace DNS
|
||||
};
|
||||
};
|
||||
|
||||
struct ResourceRecord
|
||||
struct ResourceRecord final
|
||||
: Question
|
||||
{
|
||||
unsigned int ttl = 0;
|
||||
|
||||
@@ -18,7 +18,7 @@ enum HTTPError
|
||||
};
|
||||
|
||||
/* A message to someone */
|
||||
struct HTTPReply
|
||||
struct HTTPReply final
|
||||
{
|
||||
HTTPError error = HTTP_ERROR_OK;
|
||||
Anope::string content_type;
|
||||
@@ -46,7 +46,7 @@ struct HTTPReply
|
||||
out.clear();
|
||||
}
|
||||
|
||||
struct Data
|
||||
struct Data final
|
||||
{
|
||||
char *buf;
|
||||
size_t len;
|
||||
@@ -81,7 +81,7 @@ struct HTTPReply
|
||||
};
|
||||
|
||||
/* A message from someone */
|
||||
struct HTTPMessage
|
||||
struct HTTPMessage final
|
||||
{
|
||||
std::map<Anope::string, Anope::string> headers;
|
||||
std::map<Anope::string, Anope::string> cookies;
|
||||
|
||||
@@ -16,7 +16,7 @@ public:
|
||||
virtual ~LDAPException() noexcept = default;
|
||||
};
|
||||
|
||||
struct LDAPModification
|
||||
struct LDAPModification final
|
||||
{
|
||||
enum LDAPOperation
|
||||
{
|
||||
@@ -31,7 +31,7 @@ struct LDAPModification
|
||||
};
|
||||
typedef std::vector<LDAPModification> LDAPMods;
|
||||
|
||||
struct LDAPAttributes
|
||||
struct LDAPAttributes final
|
||||
: public std::map<Anope::string, std::vector<Anope::string>>
|
||||
{
|
||||
size_t size(const Anope::string &attr) const
|
||||
@@ -75,7 +75,7 @@ enum QueryType
|
||||
QUERY_MODIFY
|
||||
};
|
||||
|
||||
struct LDAPResult
|
||||
struct LDAPResult final
|
||||
{
|
||||
std::vector<LDAPAttributes> messages;
|
||||
Anope::string error;
|
||||
|
||||
@@ -15,7 +15,7 @@ enum NewsType
|
||||
NEWS_OPER
|
||||
};
|
||||
|
||||
struct NewsMessages
|
||||
struct NewsMessages final
|
||||
{
|
||||
NewsType type;
|
||||
Anope::string name;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
struct Session
|
||||
struct Session final
|
||||
{
|
||||
cidr addr; /* A cidr (sockaddrs + len) representing this session */
|
||||
unsigned count = 1; /* Number of clients with this host */
|
||||
@@ -17,7 +17,7 @@ struct Session
|
||||
Session(const sockaddrs &ip, int len) : addr(ip, len) { }
|
||||
};
|
||||
|
||||
struct Exception
|
||||
struct Exception final
|
||||
: Serializable
|
||||
{
|
||||
Anope::string mask; /* Hosts to which this exception applies */
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
namespace Redis
|
||||
{
|
||||
struct Reply
|
||||
struct Reply final
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
namespace SASL
|
||||
{
|
||||
struct Message
|
||||
struct Message final
|
||||
{
|
||||
Anope::string source;
|
||||
Anope::string target;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
namespace SQL
|
||||
{
|
||||
|
||||
class Data
|
||||
class Data final
|
||||
: public Serialize::Data
|
||||
{
|
||||
public:
|
||||
@@ -93,13 +93,13 @@ namespace SQL
|
||||
/** A SQL query
|
||||
*/
|
||||
|
||||
struct QueryData
|
||||
struct QueryData final
|
||||
{
|
||||
Anope::string data;
|
||||
bool escape;
|
||||
};
|
||||
|
||||
struct Query
|
||||
struct Query final
|
||||
{
|
||||
Anope::string query;
|
||||
std::map<Anope::string, QueryData> parameters;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
class XMLRPCRequest
|
||||
class XMLRPCRequest final
|
||||
{
|
||||
std::map<Anope::string, Anope::string> replies;
|
||||
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ struct CoreExport Oper
|
||||
static Oper *Find(const Anope::string &name);
|
||||
};
|
||||
|
||||
class CoreExport OperType
|
||||
class CoreExport OperType final
|
||||
{
|
||||
private:
|
||||
/** The name of this opertype, e.g. "sra".
|
||||
|
||||
+2
-2
@@ -245,7 +245,7 @@ public:
|
||||
virtual Anope::string NormalizeMask(const Anope::string &mask);
|
||||
};
|
||||
|
||||
class CoreExport MessageSource
|
||||
class CoreExport MessageSource final
|
||||
{
|
||||
Anope::string source;
|
||||
User *u = nullptr;
|
||||
@@ -285,7 +285,7 @@ public:
|
||||
};
|
||||
|
||||
/** MessageTokenizer allows tokens in the IRC wire format to be read from a string */
|
||||
class CoreExport MessageTokenizer
|
||||
class CoreExport MessageTokenizer final
|
||||
{
|
||||
private:
|
||||
/** The message we are parsing tokens from. */
|
||||
|
||||
@@ -21,7 +21,7 @@ typedef Anope::hash_map<ChannelInfo *> registered_channel_map;
|
||||
extern CoreExport Serialize::Checker<registered_channel_map> RegisteredChannelList;
|
||||
|
||||
/* AutoKick data. */
|
||||
class CoreExport AutoKick
|
||||
class CoreExport AutoKick final
|
||||
: public Serializable
|
||||
{
|
||||
public:
|
||||
@@ -44,7 +44,7 @@ public:
|
||||
|
||||
/* It matters that Base is here before Extensible (it is inherited by Serializable)
|
||||
*/
|
||||
class CoreExport ChannelInfo
|
||||
class CoreExport ChannelInfo final
|
||||
: public Serializable
|
||||
, public Extensible
|
||||
{
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
#include "anope.h"
|
||||
#include "service.h"
|
||||
|
||||
class CoreExport RegexException
|
||||
class CoreExport RegexException final
|
||||
: public CoreException
|
||||
{
|
||||
public:
|
||||
|
||||
+2
-2
@@ -108,7 +108,7 @@ public:
|
||||
* of class that inherits from Serializable. Used for unserializing objects
|
||||
* of this type, as it requires a function pointer to a static member function.
|
||||
*/
|
||||
class CoreExport Serialize::Type
|
||||
class CoreExport Serialize::Type final
|
||||
: public Base
|
||||
{
|
||||
typedef Serializable* (*unserialize_func)(Serializable *obj, Serialize::Data &);
|
||||
@@ -242,7 +242,7 @@ public:
|
||||
* destructed.
|
||||
*/
|
||||
template<typename T>
|
||||
class Serialize::Reference
|
||||
class Serialize::Reference final
|
||||
: public ReferenceBase
|
||||
{
|
||||
protected:
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ namespace Servers
|
||||
|
||||
/** Class representing a server
|
||||
*/
|
||||
class CoreExport Server
|
||||
class CoreExport Server final
|
||||
: public Extensible
|
||||
{
|
||||
private:
|
||||
|
||||
+1
-1
@@ -160,7 +160,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class ServiceAlias
|
||||
class ServiceAlias final
|
||||
{
|
||||
Anope::string t, f;
|
||||
public:
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "services.h"
|
||||
#include "sockets.h"
|
||||
|
||||
class CoreExport SocketEngine
|
||||
class CoreExport SocketEngine final
|
||||
{
|
||||
static const int DefaultSize = 2; // Uplink, mode stacker
|
||||
public:
|
||||
|
||||
+4
-4
@@ -103,7 +103,7 @@ union CoreExport sockaddrs
|
||||
void ntop(int type, const void *src);
|
||||
};
|
||||
|
||||
class CoreExport cidr
|
||||
class CoreExport cidr final
|
||||
{
|
||||
sockaddrs addr;
|
||||
Anope::string cidr_ip;
|
||||
@@ -120,13 +120,13 @@ public:
|
||||
bool operator==(const cidr &other) const;
|
||||
bool operator!=(const cidr &other) const;
|
||||
|
||||
struct CoreExport hash
|
||||
struct CoreExport hash final
|
||||
{
|
||||
size_t operator()(const cidr &s) const;
|
||||
};
|
||||
};
|
||||
|
||||
class CoreExport SocketException
|
||||
class CoreExport SocketException final
|
||||
: public CoreException
|
||||
{
|
||||
public:
|
||||
@@ -339,7 +339,7 @@ class CoreExport BinarySocket
|
||||
: public virtual Socket
|
||||
{
|
||||
protected:
|
||||
struct DataBlock
|
||||
struct DataBlock final
|
||||
{
|
||||
char *orig;
|
||||
char *buf;
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ public:
|
||||
* This will ensure timers are not missed, as well as removing timers that have
|
||||
* expired and allowing the addition of new ones.
|
||||
*/
|
||||
class CoreExport TimerManager
|
||||
class CoreExport TimerManager final
|
||||
{
|
||||
/** A list of timers
|
||||
*/
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ namespace Uplink
|
||||
}
|
||||
|
||||
/* This is the socket to our uplink */
|
||||
class UplinkSocket
|
||||
class UplinkSocket final
|
||||
: public ConnectionSocket
|
||||
, public BufferedSocket
|
||||
{
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
void OnError(const Anope::string &) override;
|
||||
|
||||
/* A message sent over the uplink socket */
|
||||
class CoreExport Message
|
||||
class CoreExport Message final
|
||||
{
|
||||
MessageSource source;
|
||||
std::stringstream buffer;
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
#include "sockets.h"
|
||||
|
||||
/* An Xline, eg, anything added with operserv/akill, or any of the operserv/sxline commands */
|
||||
class CoreExport XLine
|
||||
class CoreExport XLine final
|
||||
: public Serializable
|
||||
{
|
||||
void Init();
|
||||
|
||||
Reference in New Issue
Block a user