mirror of
https://github.com/anope/anope.git
synced 2026-07-07 09:03:14 +02:00
Check virtual mode bases better
This commit is contained in:
@@ -107,6 +107,8 @@ class CoreExport ChannelMode : public Mode
|
||||
|
||||
bool CanSet(User *u) const anope_override;
|
||||
|
||||
virtual void Check() { }
|
||||
|
||||
/** 'wrap' this channel mode and param to the underlying mode and param
|
||||
*/
|
||||
virtual ChannelMode *Wrap(Anope::string ¶m);
|
||||
@@ -215,6 +217,8 @@ class CoreExport ChannelModeVirtual : public T
|
||||
|
||||
~ChannelModeVirtual();
|
||||
|
||||
void Check() anope_override;
|
||||
|
||||
ChannelMode *Wrap(Anope::string ¶m) anope_override;
|
||||
|
||||
ChannelMode *Unwrap(ChannelMode *cm, Anope::string ¶m) = 0;
|
||||
|
||||
+8
-1
@@ -213,7 +213,7 @@ ChannelModeVirtual<T>::~ChannelModeVirtual()
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ChannelMode *ChannelModeVirtual<T>::Wrap(Anope::string ¶m)
|
||||
void ChannelModeVirtual<T>::Check()
|
||||
{
|
||||
if (basech == NULL)
|
||||
{
|
||||
@@ -221,7 +221,11 @@ ChannelMode *ChannelModeVirtual<T>::Wrap(Anope::string ¶m)
|
||||
if (basech)
|
||||
basech->listeners.push_back(this);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ChannelMode *ChannelModeVirtual<T>::Wrap(Anope::string ¶m)
|
||||
{
|
||||
return basech;
|
||||
}
|
||||
|
||||
@@ -453,6 +457,9 @@ bool ModeManager::AddChannelMode(ChannelMode *cm)
|
||||
|
||||
FOREACH_MOD(OnChannelModeAdd, (cm));
|
||||
|
||||
for (unsigned int i = 0; i < ChannelModes.size(); ++i)
|
||||
ChannelModes[i]->Check();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user