]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/hashcomp.h
Refactor port binding, warning not yet tested fully
[user/henk/code/inspircd.git] / include / hashcomp.h
index 2d6be15a9be097d09d40c2f0e362fde5bf3991fa..b903f774885540c407b36f54faa2f6e42b4b5f8f 100644 (file)
@@ -36,7 +36,6 @@
 using namespace std;
 using irc::sockets::insp_aton;
 using irc::sockets::insp_ntoa;
-using irc::sockets::insp_inaddr;
 
 #ifndef LOWERMAP
 #define LOWERMAP
@@ -69,17 +68,6 @@ namespace nspace
         */
        void strlower(char *n);
 
-       /** Hashing function to hash insp_inaddr structs
-        */
-        template<> struct hash<insp_inaddr>
-        {
-               /** Hash an insp_inaddr
-                * @param a An insp_inaddr to hash
-                * @return The hash value
-                */
-                size_t operator()(const insp_inaddr &a) const;
-        };
-
        /** Hashing function to hash std::string without respect to case
         */
         template<> struct hash<std::string>
@@ -109,17 +97,6 @@ namespace irc
        };
 
 
-       /** This class returns true if two insp_inaddr structs match.
-        * Checking is done by copying both into a size_t then doing a
-        * numeric comparison of the two.
-        */
-       struct InAddr_HashComp
-       {
-               /** The operator () does the actual comparison in hash_map
-                */
-               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
@@ -208,12 +185,20 @@ namespace irc
                /** 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).
+                * one mode sequence string), and max_line_size
+                * characters. As specified below, this function
+                * should be called in a loop until it returns zero,
+                * indicating there are no more modes to return.
                 * @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);
+                * @param max_line_size The maximum size of the line
+                * to build, in characters, seperate to MAXMODES.
+                * @return The number of elements in the deque.
+                * The function should be called repeatedly until it
+                * returns 0, in case there are multiple lines of
+                * mode changes to be obtained.
+                */
+               int GetStackedLine(std::deque<std::string> &result, int max_line_size = 360);
        };
 
        /** irc::tokenstream reads a string formatted as per RFC1459 and RFC2812.
@@ -252,7 +237,7 @@ namespace irc
                /** Fetch the next token from the stream
                 * @return The next token is returned, or an empty string if none remain
                 */
-               const std::string GetToken();
+               bool GetToken(std::string &token);
        };
 
        /** irc::sepstream allows for splitting token seperated lists.
@@ -285,6 +270,16 @@ namespace irc
                 * @return The next token is returned, or an empty string if none remain
                 */
                virtual const std::string GetToken();
+               
+               /** Fetch the entire remaining stream, without tokenizing
+                * @return The remaining part of the stream
+                */
+               virtual const std::string GetRemaining();
+               
+               /** Returns true if the end of the stream has been reached
+                * @return True if the end of the stream has been reached, otherwise false
+                */
+               virtual bool StreamEnd();
        };
 
        /** A derived form of sepstream, which seperates on commas
@@ -535,11 +530,12 @@ std::istream& operator>>(std::istream &is, irc::string &str);
  */
 std::string operator+ (std::string& leftval, irc::string& rightval);
 irc::string operator+ (irc::string& leftval, std::string& rightval);
-bool operator== (std::string& leftval, irc::string& rightval);
-bool operator== (irc::string& leftval, std::string& rightval);
+bool operator== (const std::string& leftval, const irc::string& rightval);
+bool operator== (const irc::string& leftval, const std::string& rightval);
 
 std::string assign(const irc::string &other);
 irc::string assign(const std::string &other);
+std::string& trim(std::string &str);
 
 namespace nspace
 {