/* * 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 #ifndef _STLP_OUTERMOST_HEADER_ID # define _STLP_OUTERMOST_HEADER_ID 0x27 # include <stl/_prolog.h> # define _STLP_FUNCTIONAL #endif #if (_STLP_OUTERMOST_HEADER_ID == 0x27) # ifndef _STLP_INTERNAL_FUNCTION_H # include <stl/_function.h> # endif #endif #if (_STLP_OUTERMOST_HEADER_ID != 0x27) || defined (_STLP_IMPORT_VENDOR_STD) # if defined (_STLP_HAS_INCLUDE_NEXT) # include_next <functional> # else # include _STLP_NATIVE_HEADER(functional) # endif #endif #if (_STLP_OUTERMOST_HEADER_ID == 0x27) # include <stl/_epilog.h> # undef _STLP_OUTERMOST_HEADER_ID #endif #if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT) #include <boost/ref.hpp> #include <boost/utility/result_of.hpp> #include <boost/bind/placeholders.hpp> #include <boost/mem_fn.hpp> #include <boost/bind.hpp> namespace boost { template<class T> class reference_wrapper; template<class T> reference_wrapper<T> const ref(T &); template<class T> inline reference_wrapper<T const> const cref(T const &); template<typename F> struct result_of; namespace _mfi { template<class R, class T> class dm; } template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f); } // namespace boost _STLP_BEGIN_NAMESPACE namespace tr1 { using ::boost::reference_wrapper; using ::boost::ref; using ::boost::cref; using ::boost::result_of; using ::boost::mem_fn; using ::boost::bind; namespace placeholders { using ::_1; using ::_2; using ::_3; using ::_4; using ::_5; using ::_6; using ::_7; using ::_8; using ::_9; } // placeholders } // namespace tr1 _STLP_END_NAMESPACE #endif // !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT #endif /* _STLP_FUNCTIONAL */ #if !defined(_STLP_FUNCTIONAL_FUN) && !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT) #ifndef BOOST_FUNCTION_NUM_ARGS // avoid recursive includes // #ifdef BOOST_FUNCTION_BASE_HEADER // #undef BOOST_FUNCTION_BASE_HEADER // #endif // #ifdef BOOST_FUNCTION_PROLOGUE_HPP // #undef BOOST_FUNCTION_PROLOGUE_HPP // #endif #define _STLP_FUNCTIONAL_FUN #ifndef BOOST_FUNCTION_BASE_HEADER // avoid recursive includes # include <boost/function.hpp> #else namespace boost { class bad_function_call; template<typename Signature, typename Allocator > class function; template<typename Signature, typename Allocator> void swap(function<Signature, Allocator>& f1, function<Signature, Allocator>& f2); } #endif _STLP_BEGIN_NAMESPACE namespace tr1 { using ::boost::bad_function_call; using ::boost::function; using ::boost::swap; } // namespace tr1 _STLP_END_NAMESPACE #endif // !BOOST_FUNCTION_NUM_ARGS #endif // !_STLP_FUNCTIONAL_REF && !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT // Local Variables: // mode:C++ // End: