]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/hashcomp.h
Report invalid command name when invalid command is given in negotiation phase
[user/henk/code/inspircd.git] / include / hashcomp.h
index 76c7750a00fa648979f26bd5390e2dcb216a8ca1..b22f65272a81cbe85da5772b6d9ecdb7ae240b61 100644 (file)
@@ -123,17 +123,97 @@ namespace irc
                bool operator()(const insp_inaddr &s1, const insp_inaddr &s2) const;
        };
 
+       /** irc::stringjoiner joins string lists into a string, using
+        * the given seperator string.
+        * This class can join a vector of std::string, a deque of
+        * std::string, or a const char** array, using overloaded
+        * constructors.
+        */
+       class stringjoiner
+       {
+        private:
+               std::string joined;
+        public:
+               /** Join elements of a vector, between (and including) begin and end
+                * @param seperator The string to seperate values with
+                * @param sequence One or more items to seperate
+                * @param begin The starting element in the sequence to be joined
+                * @param end The ending element in the sequence to be joined
+                */
+               stringjoiner(const std::string &seperator, const std::vector<std::string> &sequence, int begin, int end);
+               /** Join elements of a deque, between (and including) begin and end
+                * @param seperator The string to seperate values with
+                * @param sequence One or more items to seperate
+                * @param begin The starting element in the sequence to be joined
+                * @param end The ending element in the sequence to be joined
+                */
+               stringjoiner(const std::string &seperator, const std::deque<std::string> &sequence, int begin, int end);
+               /** Join elements of an array of char arrays, between (and including) begin and end
+                * @param seperator The string to seperate values with
+                * @param sequence One or more items to seperate
+                * @param begin The starting element in the sequence to be joined
+                * @param end The ending element in the sequence to be joined
+                */
+               stringjoiner(const std::string &seperator, const char** sequence, int begin, int end);
+
+               /** Get the joined sequence
+                * @return A reference to the joined string
+                */
+               std::string& GetJoined();
+       };
+
+       /** 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 sequence 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);
        };