home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / memory < prev    next >
Text File  |  1998-03-08  |  2KB  |  90 lines

  1. /*
  2.  * Copyright (c) 1997
  3.  * Silicon Graphics Computer Systems, Inc.
  4.  *
  5.  * Permission to use, copy, modify, distribute and sell this software
  6.  * and its documentation for any purpose is hereby granted without fee,
  7.  * provided that the above copyright notice appear in all copies and
  8.  * that both that copyright notice and this permission notice appear
  9.  * in supporting documentation.  Silicon Graphics makes no
  10.  * representations about the suitability of this software for any
  11.  * purpose.  It is provided "as is" without express or implied warranty.
  12.  *
  13.  */
  14.  
  15. #ifndef __SGI_STL_MEMORY
  16. #define __SGI_STL_MEMORY
  17.  
  18. #include <stl_algobase.h>
  19. #include <stl_alloc.h>
  20. #include <stl_construct.h>
  21. #include <stl_tempbuf.h>
  22. #include <stl_uninitialized.h>
  23. #include <stl_raw_storage_iter.h>
  24.  
  25. // Note: auto_ptr is commented out in this release because the details
  26. //  of the interface are still being discussed by the C++ standardization
  27. //  committee.  It will be included once the iterface is finalized.
  28.  
  29. #if 0
  30. #if defined(_MUTABLE_IS_KEYWORD) && defined(_EXPLICIT_IS_KEYWORD) && \
  31.     defined(__STL_MEMBER_TEMPLATES)
  32.  
  33. __STL_BEGIN_NAMESPACE
  34.  
  35. template <class X> class auto_ptr {
  36. private:
  37.   X* ptr;
  38.   mutable bool owns;
  39. public:
  40.   typedef X element_type;
  41.   explicit auto_ptr(X* p = 0) __STL_NOTHROW : ptr(p), owns(p) {}
  42.   auto_ptr(const auto_ptr& a) __STL_NOTHROW : ptr(a.ptr), owns(a.owns) {
  43.     a.owns = 0;
  44.   }
  45.   template <class T> auto_ptr(const auto_ptr<T>& a) __STL_NOTHROW
  46.     : ptr(a.ptr), owns(a.owns) {
  47.       a.owns = 0;
  48.   }
  49.  
  50.   auto_ptr& operator=(const auto_ptr& a) __STL_NOTHROW {
  51.     if (&a != this) {
  52.       if (owns)
  53.         delete ptr;
  54.       owns = a.owns;
  55.       ptr = a.ptr;
  56.       a.owns = 0;
  57.     }
  58.   }
  59.   template <class T> auto_ptr& operator=(const auto_ptr<T>& a) __STL_NOTHROW {
  60.     if (&a != this) {
  61.       if (owns)
  62.         delete ptr;
  63.       owns = a.owns;
  64.       ptr = a.ptr;
  65.       a.owns = 0;
  66.     }
  67.   }
  68.   ~auto_ptr() {
  69.     if (owns)
  70.       delete ptr;
  71.   }
  72.  
  73.   X& operator*() const __STL_NOTHROW { return *ptr; }
  74.   X* operator->() const __STL_NOTHROW { return ptr; }
  75.   X* get() const __STL_NOTHROW { return ptr; }
  76.   X* release const __STL_NOTHROW { owns = false; return ptr }
  77. };
  78.  
  79. __STL_END_NAMESPACE
  80. #endif /* mutable && explicit && member templates */
  81. #endif /* 0 */
  82.  
  83.  
  84. #endif /* __SGI_STL_MEMORY */
  85.  
  86.  
  87. // Local Variables:
  88. // mode:C++
  89. // End:
  90.