//===-- Support/hash_map - "Portable" wrapper around hash_map ---*- C++ -*-===//
// 
//                     The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
// 
//===----------------------------------------------------------------------===//
// 
// This file provides a wrapper around the mysterious <hash_map> header file
// that seems to move around between GCC releases into and out of namespaces at
// will.  #including this header will cause hash_map to be available in the
// global namespace.
//
//===----------------------------------------------------------------------===//

#ifndef SUPPORT_HASH_MAP
#define SUPPORT_HASH_MAP

// Compiler Support Matrix
//
// Version   Namespace   Header File
//  2.95.x       ::        hash_map
//  3.0.4       std      ext/hash_map
//  3.1      __gnu_cxx   ext/hash_map
//

#include "Config/config.h"

#ifdef HAVE_GNU_EXT_HASH_MAP
// This is for GCC-3.1+ which puts hash in ext/hash_map
#include <ext/hash_map>
#define HASH_NAMESPACE __gnu_cxx

#else

// This is for GCC-3.0.x which puts hashmap in the `ext' directory.
#ifdef HAVE_STD_EXT_HASH_MAP
#include <ext/hash_map>
#define HASH_NAMESPACE std

#else
// This handles older, pre-3.0 GCC which do not have the extentions in the `ext'
// directory, and ignore the `std' namespace.
#include <hash_map>
#define HASH_NAMESPACE std
#endif

#endif

using HASH_NAMESPACE::hash_map;
using HASH_NAMESPACE::hash_multimap;
using HASH_NAMESPACE::hash;

// Include vector because ext/hash_map includes stl_vector.h and leaves
// out specializations like stl_bvector.h, causing link conflicts.
#include <vector>

#include <Support/HashExtras.h>

#endif
