+/** A list of users on a channel
+ */
+typedef std::map<userrec*,userrec*> CUList;
+
+/** Shorthand for CUList::iterator
+ */
+typedef CUList::iterator CUListIter;
+
+/** Shorthand for CUList::const_iterator
+ */
+typedef CUList::const_iterator CUListConstIter;
+
+/** A list of custom modes parameters on a channel
+ */
+typedef std::map<char,char*> CustomModeList;
+
+
+/** used to hold a channel and a users modes on that channel, e.g. +v, +h, +o
+ */
+enum UserChannelModes {
+ UCMODE_OP = 1,
+ UCMODE_VOICE = 2,
+ 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;
+
+typedef std::pair<char, unsigned int> prefixtype;
+typedef std::vector<prefixtype> pfxcontainer;
+typedef std::map<userrec*, std::vector<prefixtype> > prefixlist;
+