* std::string, or a const char* const* array, using overloaded
* constructors.
*/
- class CoreExport stringjoiner
+ class CoreExport stringjoiner : public classbase
{
private:
/** Output string
* It can then reproduce this list, clamped to a maximum of MAXMODES
* values per line.
*/
- class CoreExport modestacker
+ class CoreExport modestacker : public classbase
{
private:
+ InspIRCd* ServerInstance;
/** The mode sequence and its parameters
*/
std::deque<std::string> sequence;
* @param add True if the stack is adding modes,
* false if it is removing them
*/
- modestacker(bool add);
+ modestacker(InspIRCd* Instance, 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
* list will be ":item". This is to allow for parsing 'source' fields
* from data.
*/
- class CoreExport tokenstream
+ class CoreExport tokenstream : public classbase
{
private:
/** Original string
* @return True if tokens still remain, false if there are none left
*/
virtual bool GetToken(std::string &token);
-
+
/** 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
*/
/** Hashing stuff is totally different on vc++'s hash_map implementation, so to save a buttload of
* #ifdefs we'll just do it all at once
*/
-namespace nspace
-{
+BEGIN_HASHMAP_NAMESPACE
+
/** Hashing function to hash irc::string
*/
#ifdef WINDOWS
if(s1.length() != s2.length()) return true;
return (irc::irc_char_traits::compare(s1.c_str(), s2.c_str(), s1.length()) < 0);
}
-
+
/** Hash an irc::string value for hash_map
*/
size_t operator()(const irc::string & s) const;
if(s1.length() != s2.length()) return true;
return (irc::irc_char_traits::compare(s1.c_str(), s2.c_str(), s1.length()) < 0);
}
-
+
/** Hash a std::string using RFC1459 case sensitivity rules
* @param s A string to hash
* @return The hash value
size_t operator()(const std::string & s) const;
};
#else
+
template<> struct hash<irc::string>
{
/** Hash an irc::string using RFC1459 case sensitivity rules
size_t operator()(const irc::string &s) const;
};
+ /* XXX FIXME: Implement a hash function overriding std::string's that works with TR1! */
+
+#ifdef HASHMAP_DEPRECATED
+ struct insensitive
+#else
template<> struct hash<std::string>
+#endif
{
- /** Hash a std::string using RFC1459 case sensitivity rules
- * @param s A string to hash
- * @return The hash value
- */
size_t operator()(const std::string &s) const;
};
+
#endif
/** Convert a string to lower case respecting RFC1459
* @param n A string to lowercase
*/
void strlower(char *n);
-}
+
+END_HASHMAP_NAMESPACE
#endif