/* * InspIRCd -- Internet Relay Chat Daemon * * Copyright (C) 2009 Robin Burchell * Copyright (C) 2008 Craig Edwards * Copyright (C) 2007 Dennis Friis * Copyright (C) 2006 Oliver Lupton * * 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" /** 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