X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=include%2Fhash_map.h;h=94d2198982db40154482de1fffa455cfcebdee27;hb=5d67a5fff127bf95bca69b436ef7f645f2fe3281;hp=f74dce92aeac42d23f56f3977e1de79c80cb8cac;hpb=2f9578055707cea606f6a077c0cbfc388f962cd7;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/hash_map.h b/include/hash_map.h index f74dce92a..94d219898 100644 --- a/include/hash_map.h +++ b/include/hash_map.h @@ -2,30 +2,55 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. - * E-mail: - * - * - * + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * - * Written by Craig Edwards, Craig McLure, and others. * This program is free but copyrighted software; see * the file COPYING for details. * * --------------------------------------------------- */ - -#ifndef INSPIRCD_HASHMAP_H -#define INSPIRCD_HASHMAP_H -#include "inspircd_config.h" + #ifndef INSPIRCD_HASHMAP_H + #define INSPIRCD_HASHMAP_H -#ifdef GCC3 -#include -#define nspace __gnu_cxx -#else -#include -#define nspace std -#endif + /** Where hash_map is varies from compiler to compiler + * as it is not standard unless we have tr1. + */ + #ifndef WIN32 + #ifdef HASHMAP_DEPRECATED + // GCC4+ has deprecated hash_map and uses tr1. But of course, uses a different include to MSVC. FOR FUCKS SAKE. + #include + #define HAS_TR1_UNORDERED + #else + #include + /** Oddball linux namespace for hash_map */ + #define nspace __gnu_cxx + #define BEGIN_HASHMAP_NAMESPACE namespace nspace { + #define END_HASHMAP_NAMESPACE } + #endif + #else + #if _MSC_VER >= 1600 + // New MSVC has tr1. Just to make things fucked up, though, MSVC and GCC use different includes! FFS. + #include + #define HAS_TR1_UNORDERED + #define HASHMAP_DEPRECATED + #else + /** Oddball windows namespace for hash_map */ + #include + #define nspace stdext + using stdext::hash_map; + #define BEGIN_HASHMAP_NAMESPACE namespace nspace { + #define END_HASHMAP_NAMESPACE } + #endif + #endif + + // tr1: restoring sanity to our headers. now if only compiler vendors could agree on a FUCKING INCLUDE FILE. + #ifdef HAS_TR1_UNORDERED + #define hash_map unordered_map + #define nspace std::tr1 + #define BEGIN_HASHMAP_NAMESPACE namespace std { namespace tr1 { + #define END_HASHMAP_NAMESPACE } } + #endif #endif