summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-10-02 12:59:55 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-10-02 12:59:55 +0000
commitf0e0cb4da6fb8ccd2126ebca7d1105bcf72bc5fd (patch)
tree405ea54e29dd1bd65b3be7be830099913b21fe00 /include
parent2164b0de1227882c1748528719bfa7550cf1e170 (diff)
mmmm dinner break, oh and document and make use of modestacker.
Someone test this, i cant as im at work. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5395 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r--include/hashcomp.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/include/hashcomp.h b/include/hashcomp.h
index 76c7750a0..fac1d4ed2 100644
--- a/include/hashcomp.h
+++ b/include/hashcomp.h
@@ -123,17 +123,58 @@ namespace irc
bool operator()(const insp_inaddr &s1, const insp_inaddr &s2) const;
};
+ /** irc::modestacker stacks mode sequences into a list.
+ * It can then reproduce this list, clamped to a maximum of MAXMODES
+ * values per line.
+ */
class modestacker
{
private:
+ /** The mode sequence and its parameters
+ */
std::deque<std::string> sequence;
+ /** True if the mode sequence is initially adding
+ * characters, false if it is initially removing
+ * them
+ */
bool adding;
public:
+ /** Construct a new modestacker.
+ * @param add True if the stack is adding modes,
+ * false if it is removing them
+ */
modestacker(bool add);
+ /** Push a modeletter and its parameter onto the stack.
+ * No checking is performed as to if this mode actually
+ * requires a parameter. If you stack invalid mode
+ * sequences, they will be tidied if and when they are
+ * passed to a mode parser.
+ * @param modeletter The mode letter to insert
+ * @param parameter The parameter for the mode
+ */
void Push(char modeletter, const std::string &parameter);
+ /** Push a modeletter without parameter onto the stack.
+ * No checking is performed as to if this mode actually
+ * requires a parameter. If you stack invalid mode
+ * sequences, they will be tidied if and when they are
+ * passed to a mode parser.
+ * @param modeletter The mode letter to insert
+ */
void Push(char modeletter);
+ /** Push a '+' symbol onto the stack.
+ */
void PushPlus();
+ /** Push a '-' symbol onto the stack.
+ */
void PushMinus();
+ /** Return zero or more elements which form the
+ * mode line. This will be clamped to a max of
+ * MAXMODES+1 items (MAXMODES mode parameters and
+ * one mode dequence string).
+ * @param result The deque to populate. This will
+ * be cleared before it is used.
+ * @return The number of elements in the deque
+ */
int GetStackedLine(std::deque<std::string> &result);
};