21#define ZNC_MSG_DEPRECATED(msg)
23#define ZNC_MSG_DEPRECATED(msg) __attribute__((deprecated(msg)))
26#include <znc/zncconfig.h>
147 const timeval&
GetTime()
const {
return m_time; }
148 void SetTime(
const timeval& ts) { m_time = ts; }
168 template <
typename M>
170 static_assert(std::is_base_of<CMessage, M>{},
171 "Must be subclass of CMessage");
172 static_assert(
sizeof(M) ==
sizeof(
CMessage),
173 "No data members allowed in CMessage subclasses.");
174 return static_cast<M&
>(*this);
177 template <
typename M>
178 const M&
As() const& {
179 static_assert(std::is_base_of<CMessage, M>{},
180 "Must be subclass of CMessage");
181 static_assert(
sizeof(M) ==
sizeof(
CMessage),
182 "No data members allowed in CMessage subclasses.");
183 return static_cast<const M&
>(*this);
186 template <
typename M,
typename =
typename std::enable_if<
187 std::is_base_of<CMessage, M>{}>::type>
191 template <
typename M,
typename =
typename std::enable_if<
192 std::is_base_of<CMessage, M>{}>::type>
193 operator const M&()
const& {
197#define REGISTER_ZNC_MESSAGE(M)
201 template <
typename M>
216 CChan* m_pChan =
nullptr;
218 bool m_bColon =
false;
223template <
typename M,
typename =
typename std::enable_if<
224 std::is_base_of<CMessage, M>{}>::type>
225inline ::std::ostream& operator<<(::std::ostream& os,
const M& msg) {
248 SetParam(1,
"\001ACTION " + sText +
"\001");
#define REGISTER_ZNC_MESSAGE(M)
Definition Message.h:197
#define ZNC_MSG_DEPRECATED(msg)
Definition Message.h:23
std::vector< CString > VCString
Definition ZNCString.h:38
CString GetText() const
Definition Message.h:244
void SetText(const CString &sText)
Definition Message.h:247
void SetText(const CString &sText)
Definition Message.h:256
CString GetText() const
Definition Message.h:255
bool IsReply() const
Definition Message.h:262
CString GetText() const
Definition Message.h:263
void SetText(const CString &sText)
Definition Message.h:266
void SetNewIdent(const CString &sIdent)
Definition Message.h:368
CString GetNewIdent() const
Definition Message.h:367
void SetNewHost(const CString &sHost)
Definition Message.h:370
CString GetNewHost() const
Definition Message.h:369
Definition IRCNetwork.h:40
void SetChannel(const CString &sChannel)
Definition Message.h:327
void SetInvitedNick(const CString &sNick)
Definition Message.h:325
CString GetInvitedNick() const
Definition Message.h:324
CString GetChannel() const
Definition Message.h:326
void SetKey(const CString &sKey)
Definition Message.h:273
CString GetKey() const
Definition Message.h:272
CString GetReason() const
Definition Message.h:315
void SetKickedNick(const CString &sNick)
Definition Message.h:314
CString GetKickedNick() const
Definition Message.h:313
void SetText(const CString &sText)
Definition Message.h:318
void SetReason(const CString &sReason)
Definition Message.h:316
CString GetText() const
Definition Message.h:317
Here is a small explanation of how messages on IRC work, and how you can use this class to get useful...
Definition Message.h:57
void SetTag(const CString &sKey, const CString &sValue)
MCString & GetTags()
Definition Message.h:151
FormatFlags
Definition Message.h:157
@ ExcludePrefix
Definition Message.h:159
@ ExcludeTags
Definition Message.h:160
@ IncludeAll
Definition Message.h:158
Type
Definition Message.h:64
const CNick & GetNick() const
Definition Message.h:115
void SetNick(const CNick &Nick)
Definition Message.h:116
void Clone(const CMessage &Other)
const VCString & GetParams() const
Definition Message.h:121
void SetClient(CClient *pClient)
Definition Message.h:109
CNick & GetNick()
Definition Message.h:114
void SetTime(const timeval &ts)
Definition Message.h:148
CIRCNetwork * GetNetwork() const
Definition Message.h:104
const timeval & GetTime() const
Definition Message.h:147
Type GetType() const
Returns which type of message this is.
Definition Message.h:98
CString ToString(unsigned int uFlags=IncludeAll) const
const MCString & GetTags() const
Definition Message.h:150
CClient * GetClient() const
Definition Message.h:108
CString GetParamsColon(unsigned int uIdx, unsigned int uLen=-1) const
VCString GetParamsSplit(unsigned int uIdx, unsigned int uLen=-1) const
Get a subset of the message parameters.
bool Equals(const CMessage &Other) const
const M & As() const &
Definition Message.h:178
CString GetParam(unsigned int uIdx) const
CString GetParams(unsigned int uIdx, unsigned int uLen=-1) const ZNC_MSG_DEPRECATED("Use GetParamsColon() instead")
Definition Message.h:138
CString GetTag(const CString &sKey) const
void SetChan(CChan *pChan)
Definition Message.h:112
void SetCommand(const CString &sCommand)
CMessage(const CNick &Nick, const CString &sCommand, const VCString &vsParams=VCString(), const MCString &mssTags=MCString::EmptyMap)
const CString & GetCommand() const
Definition Message.h:118
void SetParams(VCString &&vsParams)
M & As() &
Definition Message.h:169
void SetTags(const MCString &mssTags)
Definition Message.h:152
CMessage(const CString &sMessage="")
void SetNetwork(CIRCNetwork *pNetwork)
Definition Message.h:105
void SetParams(const VCString &vsParams)
void SetParam(unsigned int uIdx, const CString &sParam)
void Parse(const CString &sMessage)
CChan * GetChan() const
Definition Message.h:111
bool HasModes() const
Definition Message.h:286
VCString GetModeParams() const
Definition Message.h:284
CString GetModeList() const
Definition Message.h:282
CString GetModes() const
Definition Message.h:280
void SetNewNick(const CString &sNick)
Definition Message.h:294
CString GetNewNick() const
Definition Message.h:293
CString GetOldNick() const
Definition Message.h:292
const CString & GetNick() const
CString GetText() const
Definition Message.h:300
void SetText(const CString &sText)
Definition Message.h:301
unsigned int GetCode() const
Definition Message.h:307
void SetText(const CString &sText)
Definition Message.h:336
void SetReason(const CString &sReason)
Definition Message.h:334
CString GetReason() const
Definition Message.h:333
CString GetText() const
Definition Message.h:335
CString GetReason() const
Definition Message.h:342
void SetText(const CString &sText)
Definition Message.h:345
CString GetText() const
Definition Message.h:344
void SetReason(const CString &sReason)
Definition Message.h:343
String class that is used inside ZNC.
Definition ZNCString.h:50
unsigned int ToUInt() const
@ EDEBUG
Definition ZNCString.h:58
CString TrimSuffix_n(const CString &sSuffix) const
Trim a given suffix.
CString TrimPrefix_n(const CString &sPrefix=":") const
Trim a given prefix.
bool Equals(const CString &s, CaseSensitivity cs=CaseInsensitive) const
Check if this string is equal to some other string.
CString GetTarget() const
Definition Message.h:237
void SetTarget(const CString &sTarget)
Definition Message.h:238
void SetText(const CString &sText)
Definition Message.h:352
CString GetText() const
Definition Message.h:351
void SetTopic(const CString &sTopic)
Definition Message.h:359
CString GetTopic() const
Definition Message.h:358
void SetText(const CString &sText)
Definition Message.h:361
CString GetText() const
Definition Message.h:360
A dictionary for strings.
Definition ZNCString.h:577
static const MCString EmptyMap
A static instance of an empty map.
Definition ZNCString.h:588