/*
 * Copyright (c) 1996,1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Copyright (c) 1999
 * Boris Fomitchev
 *
 * This material is provided "as is", with absolutely no warranty expressed
 * or implied. Any use is at your own risk.
 *
 * Permission to use or copy this software for any purpose is hereby granted
 * without fee, provided the above notices are retained on all copies.
 * Permission to modify the code and to distribute modified code is granted,
 * provided the above notices are retained, and a notice that the code was
 * modified is included with the above copyright notice.
 *
 */

#ifndef _STLP_HASH_MAP
#define _STLP_HASH_MAP

#ifndef _STLP_OUTERMOST_HEADER_ID
#  define _STLP_OUTERMOST_HEADER_ID 0x4028
#  include <stl/_prolog.h>
#endif

#ifdef _STLP_PRAGMA_ONCE
#  pragma once
#endif

#if defined (_STLP_NO_EXTENSIONS)
/* Comment following if you want to use hash constainers even if you ask for
 * no extension.
 */
#  error The hash_map and hash_multimap class are STLport extensions.
#endif

#include <stl/_hash_map.h>

#if (_STLP_OUTERMOST_HEADER_ID == 0x4028)
#  include <stl/_epilog.h>
#  undef _STLP_OUTERMOST_HEADER_ID
#endif

#endif /* _STLP_HASH_MAP */

// Local Variables:
// mode:C++
// End:
