summaryrefslogtreecommitdiff
path: root/include/hashcomp.h
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-05-15 03:03:23 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-05-15 03:03:23 +0000
commiteb4229deed0281ae566ef7e55a144e5d3183a4b2 (patch)
treeb99c2b78da26b68e04dcccba5bc6efb55706d237 /include/hashcomp.h
parent84b6d82413c71c845c97279ea9150089cd9f8b5a (diff)
Moved a ton of functions into helperfuncs.h to speed up recompiles
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1383 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/hashcomp.h')
-rw-r--r--include/hashcomp.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/include/hashcomp.h b/include/hashcomp.h
new file mode 100644
index 000000000..0611cf239
--- /dev/null
+++ b/include/hashcomp.h
@@ -0,0 +1,89 @@
+#ifndef _HASHCOMP_H_
+#define _HASHCOMP_H_
+
+#include "inspircd.h"
+#include "inspircd_io.h"
+#include "inspircd_util.h"
+#include "inspircd_config.h"
+
+#ifdef GCC3
+#include <ext/hash_map>
+#else
+#include <hash_map>
+#endif
+
+#ifdef GCC3
+#define nspace __gnu_cxx
+#else
+#define nspace std
+#endif
+
+using namespace std;
+
+namespace nspace
+{
+#ifdef GCC34
+ template<> struct hash<in_addr>
+#else
+ template<> struct nspace::hash<in_addr>
+#endif
+ {
+ size_t operator()(const struct in_addr &a) const
+ {
+ size_t q;
+ memcpy(&q,&a,sizeof(size_t));
+ return q;
+ }
+ };
+#ifdef GCC34
+ template<> struct hash<string>
+#else
+ template<> struct nspace::hash<string>
+#endif
+ {
+ size_t operator()(const string &s) const
+ {
+ char a[MAXBUF];
+ static struct hash<const char *> strhash;
+ strlcpy(a,s.c_str(),MAXBUF);
+ strlower(a);
+ return strhash(a);
+ }
+ };
+}
+
+
+struct StrHashComp
+{
+
+ bool operator()(const string& s1, const string& s2) const
+ {
+ char a[MAXBUF],b[MAXBUF];
+ strlcpy(a,s1.c_str(),MAXBUF);
+ strlcpy(b,s2.c_str(),MAXBUF);
+ strlower(a);
+ strlower(b);
+ return (strcasecmp(a,b) == 0);
+ }
+
+};
+
+struct InAddr_HashComp
+{
+
+ bool operator()(const in_addr &s1, const in_addr &s2) const
+ {
+ size_t q;
+ size_t p;
+
+ memcpy(&q,&s1,sizeof(size_t));
+ memcpy(&p,&s2,sizeof(size_t));
+
+ return (q == p);
+ }
+
+};
+
+
+
+#endif