summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorattilamolnar <attilamolnar@hush.com>2013-06-18 18:50:10 +0200
committerattilamolnar <attilamolnar@hush.com>2013-07-19 19:40:03 +0200
commit882084defcc43c876ecb10e30086b63ac074fcad (patch)
tree4a377934843b6933dae97de1019a84448e7f565a /include
parentb954283ccc4253a6881513bbe7f743c39886d3b7 (diff)
Move SetNoticeMask(), FormatNoticeMasks() and ProcessNoticeMasks() from the User class to the snomask modehandler
Diffstat (limited to 'include')
-rw-r--r--include/builtinmodes.h24
-rw-r--r--include/users.h27
2 files changed, 31 insertions, 20 deletions
diff --git a/include/builtinmodes.h b/include/builtinmodes.h
index ba34a3da9..31b208d52 100644
--- a/include/builtinmodes.h
+++ b/include/builtinmodes.h
@@ -146,10 +146,32 @@ class ModeUserInvisible : public SimpleUserModeHandler
}
};
-/** User mode +n
+/** User mode +s
*/
class ModeUserServerNoticeMask : public ModeHandler
{
+ /** Create a displayable mode string for this users snomasks
+ * @param user The user whose notice masks to format
+ * @return The notice mask character sequence
+ */
+ std::string FormatNoticeMasks(User* user);
+
+ /** Process a snomask modifier string, e.g. +abc-de
+ * @param user The target user
+ * @param sm A sequence of notice mask characters
+ * @return The cleaned mode sequence which can be output,
+ * e.g. in the above example if masks c and e are not
+ * valid, this function will return +ab-d
+ */
+ std::string ProcessNoticeMasks(User* user, const char *sm);
+
+ /** Changed a specific notice mask value
+ * @param user The target user
+ * @param sm The server notice mask to change
+ * @param value An on/off value for this mask
+ */
+ void SetNoticeMask(User* user, unsigned char sm, bool value);
+
public:
ModeUserServerNoticeMask();
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding);
diff --git a/include/users.h b/include/users.h
index 28bf8b05b..0e660d098 100644
--- a/include/users.h
+++ b/include/users.h
@@ -400,19 +400,6 @@ class CoreExport User : public Extensible
*/
void InvalidateCache();
- /** Create a displayable mode string for this users snomasks
- * @return The notice mask character sequence
- */
- std::string FormatNoticeMasks();
-
- /** Process a snomask modifier string, e.g. +abc-de
- * @param sm A sequence of notice mask characters
- * @return The cleaned mode sequence which can be output,
- * e.g. in the above example if masks c and e are not
- * valid, this function will return +ab-d
- */
- std::string ProcessNoticeMasks(const char *sm);
-
/** Returns whether this user is currently away or not. If true,
* further information can be found in User::awaymsg and User::awaytime
* @return True if the user is away, false otherwise
@@ -431,12 +418,6 @@ class CoreExport User : public Extensible
*/
bool IsNoticeMaskSet(unsigned char sm);
- /** Changed a specific notice mask value
- * @param sm The server notice mask to change
- * @param value An on/off value for this mask
- */
- void SetNoticeMask(unsigned char sm, bool value);
-
/** Create a displayable mode string for this users umodes
* @param showparameters The mode string
*/
@@ -449,6 +430,7 @@ class CoreExport User : public Extensible
bool IsModeSet(unsigned char m);
bool IsModeSet(ModeHandler* mh);
bool IsModeSet(ModeHandler& mh) { return IsModeSet(&mh); }
+ bool IsModeSet(UserModeReference& moderef);
/** Set a specific usermode to on or off
* @param m The user mode
@@ -911,6 +893,13 @@ inline bool User::IsModeSet(ModeHandler* mh)
return (modes[m-65]);
}
+inline bool User::IsModeSet(UserModeReference& moderef)
+{
+ if (!moderef)
+ return false;
+ return IsModeSet(*moderef);
+}
+
inline void User::SetMode(ModeHandler* mh, bool value)
{
char m = mh->GetModeChar();