/*
 * Copyright (c) 1997-1999
 * 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_MEMORY

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

#if (_STLP_OUTERMOST_HEADER_ID == 0x46)
#  ifndef _STLP_INTERNAL_ALLOC_H
#    include <stl/_alloc.h>
#  endif

#  ifndef _STLP_INTERNAL_TEMPBUF_H
#    include <stl/_tempbuf.h>
#  endif

#  ifndef _STLP_INTERNAL_RAW_STORAGE_ITER_H
#    include <stl/_raw_storage_iter.h>
#  endif

#  include <stl/_auto_ptr.h>
#endif

#if (_STLP_OUTERMOST_HEADER_ID != 0x46) || defined (_STLP_IMPORT_VENDOR_STD)
#  if defined (__MSL__)
#    include _STLP_NATIVE_HEADER(limits)
#  endif

#  if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT)
#    define BOOST_TR1_MEMORY_INCLUDED
#    define BOOST_TR1_FULL_MEMORY_INCLUDED
#  endif

#  if defined (_STLP_HAS_INCLUDE_NEXT)
#    include_next <memory>
#  else
#    include _STLP_NATIVE_HEADER(memory)
#  endif

#  if defined (__MSL__) && (__MSL__ >= 0x2405   && __MSL__ < 0x5201) 
/*  980401 vss  MSL 2.4  Pro 3 Release  */  
#    include <new_mem.h>
#  endif
#endif

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

#if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT)

namespace boost {

class bad_weak_ptr;
template<class T> class shared_ptr;
template<class T> class weak_ptr;
template<class T> class enable_shared_from_this;
template<class D, class T> D * get_deleter(shared_ptr<T> const & p);
template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r);
template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r);
template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r);
template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b);
template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b);

namespace detail{
class shared_count;
class weak_count;
}

} // namespace boost

#  ifndef BOOST_SHARED_PTR_HPP_INCLUDED
#    include <boost/shared_ptr.hpp>
#  endif
#  ifndef BOOST_WEAK_PTR_HPP_INCLUDED
#    include <boost/weak_ptr.hpp>
#  endif
#  ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
#    include <boost/enable_shared_from_this.hpp>
#  endif

_STLP_BEGIN_NAMESPACE

namespace tr1 {

using ::boost::bad_weak_ptr;
using ::boost::shared_ptr;
using ::boost::swap;
using ::boost::static_pointer_cast;
using ::boost::dynamic_pointer_cast;
using ::boost::const_pointer_cast;
using ::boost::get_deleter;
using ::boost::weak_ptr;
using ::boost::enable_shared_from_this;

// shared_ptr IO
// weak_ptr IO

} // namespace tr1

_STLP_END_NAMESPACE

#endif /* !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT */

#endif /* _STLP_MEMORY */

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

