summaryrefslogtreecommitdiff
path: root/include/channels.h
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-02-21 15:11:24 +0100
committerAttila Molnar <attilamolnar@hush.com>2014-02-21 15:11:24 +0100
commit7ffef79f97c8dc9f21da35dff9f822be7f62edf3 (patch)
tree075be36de9df1ee6e1a5845343e4bf970824dc00 /include/channels.h
parent1b6dda7ad54dd0242cd9eac30f167d76f061d2fa (diff)
Index Channel::modes and User::modes with the id of the mode instead of its letter
Diffstat (limited to 'include/channels.h')
-rw-r--r--include/channels.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/include/channels.h b/include/channels.h
index ba2018e97..628f34f9f 100644
--- a/include/channels.h
+++ b/include/channels.h
@@ -41,12 +41,10 @@ class CoreExport Channel : public Extensible, public InviteBase<Channel>
void SetDefaultModes();
/** Modes for the channel.
- * This is not a null terminated string! It is a bitset where
- * each item in it represents if a mode is set. For example
- * for mode +A, index 0. Use modechar-65 to calculate which
- * field to check.
+ * It is a bitset where each item in it represents if a mode is set.
+ * To see if a mode is set, inspect modes[mh->modeid]
*/
- std::bitset<64> modes;
+ std::bitset<ModeParser::MODEID_MAX> modes;
/** Remove the given membership from the channel's internal map of
* memberships and destroy the Membership object.
@@ -113,7 +111,7 @@ class CoreExport Channel : public Extensible, public InviteBase<Channel>
* @param mode The mode character you wish to query
* @return True if the custom mode is set, false if otherwise
*/
- inline bool IsModeSet(ModeHandler* mode) { return modes[mode->GetModeChar()-'A']; }
+ bool IsModeSet(ModeHandler* mode) { return ((mode->GetId() != ModeParser::MODEID_MAX) && (modes[mode->GetId()])); }
bool IsModeSet(ModeHandler& mode) { return IsModeSet(&mode); }
bool IsModeSet(ChanModeReference& mode);