summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-14 17:46:47 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-14 17:46:47 +0000
commita78cecbeb9c677bdd4b2f44c01195759af63485b (patch)
tree03b0a71514c6e0dcf6eec78eefe160a2ea7f8b47 /include
parent4eb254df411f8dd1694f1b3781c77f702538c59f (diff)
Refactor userrec::chans.
Old way: A vector of ucrec, MAXCHANS in size by default populated by NULLS, so you have to scan the vector to find an empty slot when joining a user, parting a user etc New way: std::map<chanrec*, char> (the char holds their basic core permissions on the channel [voice, halfop, op]) This increases speed a ton, and removes some wtf-age. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5986 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r--include/channels.h29
-rw-r--r--include/users.h3
2 files changed, 3 insertions, 29 deletions
diff --git a/include/channels.h b/include/channels.h
index e382b73e1..b480d7789 100644
--- a/include/channels.h
+++ b/include/channels.h
@@ -95,33 +95,6 @@ enum UserChannelModes {
UCMODE_HOP = 4
};
-/** Holds a user's modes on a channel
- * This class associates a users privilages with a channel by creating a pointer link between
- * a userrec and chanrec class. The uc_modes member holds a bitmask of which privilages the user
- * has on the channel, such as op, voice, etc.
- */
-class ucrec : public classbase
-{
- public:
- /** Contains a bitmask of the UCMODE_OP ... UCMODE_FOUNDER values.
- * If this value is zero, the user has no privilages upon the channel.
- */
- char uc_modes;
-
- /** Points to the channel record where the given modes apply.
- * If the record is not in use, this value will be NULL.
- */
- chanrec *channel;
-
- /** Constructor for ucrec
- */
- ucrec() : uc_modes(0), channel(NULL) { /* stub */ }
-
- /** Destructor for ucrec
- */
- virtual ~ucrec() { /* stub */ }
-};
-
class InspIRCd;
/** A stored prefix and its rank
@@ -150,7 +123,7 @@ class chanrec : public Extensible
/** Connect a chanrec to a userrec
*/
- static chanrec* ForceChan(InspIRCd* Instance, chanrec* Ptr,ucrec *a,userrec* user, const std::string &privs);
+ static chanrec* ForceChan(InspIRCd* Instance, chanrec* Ptr, userrec* user, const std::string &privs);
prefixlist prefixes;
diff --git a/include/users.h b/include/users.h
index 677f8816d..429606344 100644
--- a/include/users.h
+++ b/include/users.h
@@ -146,7 +146,8 @@ typedef std::vector<ConnectClass> ClassVector;
/** Typedef for the list of user-channel records for a user
*/
-typedef std::vector<ucrec*> UserChanList;
+typedef std::map<chanrec*, char> UserChanList;
+typedef UserChanList::iterator UCListIter;
/** Holds all information about a user
* This class stores all information about a user connected to the irc server. Everything about a