/*
 * 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_FUNCTIONAL
#define _STLP_FUNCTIONAL

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

# ifdef _STLP_PRAGMA_ONCE
#  pragma once
# endif

# if defined (_STLP_IMPORT_VENDOR_STD)
#  include _STLP_NATIVE_HEADER(functional)
# endif

# ifndef _STLP_INTERNAL_FUNCTION_H
#  include <stl/_function.h>
# endif

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

#endif /* _STLP_FUNCTIONAL */

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