/* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * */ #ifndef __SGI_STL_MEMORY #define __SGI_STL_MEMORY #include #include #include #include #include #include // Note: auto_ptr is commented out in this release because the details // of the interface are still being discussed by the C++ standardization // committee. It will be included once the iterface is finalized. #if 0 #if defined(_MUTABLE_IS_KEYWORD) && defined(_EXPLICIT_IS_KEYWORD) && \ defined(__STL_MEMBER_TEMPLATES) __STL_BEGIN_NAMESPACE template class auto_ptr { private: X* ptr; mutable bool owns; public: typedef X element_type; explicit auto_ptr(X* p = 0) __STL_NOTHROW : ptr(p), owns(p) {} auto_ptr(const auto_ptr& a) __STL_NOTHROW : ptr(a.ptr), owns(a.owns) { a.owns = 0; } template auto_ptr(const auto_ptr& a) __STL_NOTHROW : ptr(a.ptr), owns(a.owns) { a.owns = 0; } auto_ptr& operator=(const auto_ptr& a) __STL_NOTHROW { if (&a != this) { if (owns) delete ptr; owns = a.owns; ptr = a.ptr; a.owns = 0; } } template auto_ptr& operator=(const auto_ptr& a) __STL_NOTHROW { if (&a != this) { if (owns) delete ptr; owns = a.owns; ptr = a.ptr; a.owns = 0; } } ~auto_ptr() { if (owns) delete ptr; } X& operator*() const __STL_NOTHROW { return *ptr; } X* operator->() const __STL_NOTHROW { return ptr; } X* get() const __STL_NOTHROW { return ptr; } X* release const __STL_NOTHROW { owns = false; return ptr } }; __STL_END_NAMESPACE #endif /* mutable && explicit && member templates */ #endif /* 0 */ #endif /* __SGI_STL_MEMORY */ // Local Variables: // mode:C++ // End: