mirror of
https://github.com/znc/znc.git
synced 2026-05-04 12:32:33 +02:00
Add CMessage::Clone()
Due to (intentional) lack of CFooMessage::operator=(CMessage), it was
a bit clumsy to do such copy-conversions:
CMessage Copy = Message;
CJoinMessage& JoinMsg = static_cast<CJoinMessage&>(Copy);
// ...
vs.
CJoinMessge JoinMsg;
JoinMsg.Clone(Message);
// ...
Alternatively, copy ctor(CMessage) and assignment operator=(CMessage)
could have been added to all CMessage subclasses. I've been trying to
avoid that, to make these operations very explicit. It has helped a
lot so far by preventing accidental copies.
This commit is contained in:
@@ -31,6 +31,8 @@ public:
|
||||
explicit CMessage(const CString& sMessage = "");
|
||||
CMessage(const CNick& Nick, const CString& sCommand, const VCString& vsParams = VCString(), const MCString& mssTags = MCString::EmptyMap);
|
||||
|
||||
void Clone(const CMessage& Other);
|
||||
|
||||
// ZNC <-> IRC
|
||||
CIRCNetwork* GetNetwork() const { return m_pNetwork; }
|
||||
void SetNetwork(CIRCNetwork* pNetwork) { m_pNetwork = pNetwork; }
|
||||
|
||||
@@ -29,6 +29,13 @@ CMessage::CMessage(const CNick& Nick, const CString& sCommand, const VCString& v
|
||||
InitTime();
|
||||
}
|
||||
|
||||
void CMessage::Clone(const CMessage& Message)
|
||||
{
|
||||
if (&Message != this) {
|
||||
*this = Message;
|
||||
}
|
||||
}
|
||||
|
||||
CString CMessage::GetParams(unsigned int uIdx, unsigned int uLen) const
|
||||
{
|
||||
VCString vsParams;
|
||||
|
||||
Reference in New Issue
Block a user