/*
 * 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_CLOCALE

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

#if (_STLP_OUTERMOST_HEADER_ID == 0x109)
#  ifndef _STLP_INTERNAL_CLOCALE
#    include <stl/_clocale.h>
#  endif
#endif

#if (_STLP_OUTERMOST_HEADER_ID != 0x109) || defined (_STLP_IMPORT_VENDOR_STD)
#  if defined (_STLP_HAS_INCLUDE_NEXT)
#    include_next <clocale>
#  else
#    include _STLP_NATIVE_CPP_C_HEADER(clocale)
#  endif
#endif

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

#endif /* _STLP_CLOCALE */

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