X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fhash_map.h;h=e789ea66a72875227daebe7a2b88d8dd38d9fb8d;hb=4c751dbbe8945e5efc230a59b0ed51c2ba10cf92;hp=39529634a23a8011b045dd53a82a789294df8f7b;hpb=09dd16b981c38cbde7573398cb50ae1cf0531ade;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/hash_map.h b/include/hash_map.h index 39529634a..e789ea66a 100644 --- a/include/hash_map.h +++ b/include/hash_map.h @@ -1,35 +1,59 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. - * E-mail: - * - * - * + * Copyright (C) 2009 Robin Burchell + * Copyright (C) 2008 Craig Edwards + * Copyright (C) 2007 Dennis Friis + * Copyright (C) 2006 Oliver Lupton * - * Written by Craig Edwards, Craig McLure, and others. - * This program is free but copyrighted software; see - * the file COPYING for details. + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * --------------------------------------------------- + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ - -#ifndef INSPIRCD_HASHMAP_H -#define INSPIRCD_HASHMAP_H - -#include "inspircd_config.h" - -#ifdef GCC3 -#include -#define nspace __gnu_cxx -#else - -#include -#define nspace std - -#endif +#ifndef INSPIRCD_HASHMAP_H +#define INSPIRCD_HASHMAP_H + + /** Where hash_map is varies from compiler to compiler + * as it is not standard unless we have tr1. + * + * TODO: in 2.2 if we drop support for libstdc++ older than 3.4.7 and GCC older + * than 4.1 this can be cleaned up massively. + */ + #if !defined _LIBCPP_VERSION && !defined _WIN32 + #if !defined __GLIBCXX__ || __GLIBCXX__ > 20060309 + // 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 + #define HASHMAP_DEPRECATED + #define hash_map unordered_map + #define nspace std::tr1 + #define BEGIN_HASHMAP_NAMESPACE namespace std { namespace tr1 { + #define END_HASHMAP_NAMESPACE } } + #else + #include + /** Oddball linux namespace for hash_map */ + #define nspace __gnu_cxx + #define BEGIN_HASHMAP_NAMESPACE namespace nspace { + #define END_HASHMAP_NAMESPACE } + #endif + #else + #include + #define HAS_TR1_UNORDERED + #define HASHMAP_DEPRECATED + #define hash_map unordered_map + #define nspace std + #define BEGIN_HASHMAP_NAMESPACE namespace std { + #define END_HASHMAP_NAMESPACE } + #endif #endif