00001 // This file is part of ff3d - http://www.freefem.org/ff3d 00002 // Copyright (C) 2001, 2002, 2003 Stéphane Del Pino 00003 00004 // This program is free software; you can redistribute it and/or modify 00005 // it under the terms of the GNU General Public License as published by 00006 // the Free Software Foundation; either version 2, or (at your option) 00007 // any later version. 00008 00009 // This program is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 // GNU General Public License for more details. 00013 00014 // You should have received a copy of the GNU General Public License 00015 // along with this program; if not, write to the Free Software Foundation, 00016 // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 00018 // $Id: AutoPointer.hpp,v 1.1.1.1 2003/02/17 16:32:50 delpinux Exp $ 00019 00020 #ifndef AUTOPOINTER_HPP 00021 #define AUTOPOINTER_HPP 00022 00023 template <typename PointedType> 00024 class AutoPointer 00025 { 00026 private: 00027 PointedType * __pointer; 00028 00029 public: 00030 operator PointedType*() const 00031 { 00032 return __pointer; 00033 } 00034 00035 AutoPointer<PointedType>& operator = (PointedType* p) 00036 { 00037 if(__pointer != 0) 00038 delete __pointer; 00039 __pointer = p; 00040 return *this; 00041 } 00042 00043 AutoPointer<PointedType>& operator = (const AutoPointer<PointedType>& ap) 00044 { 00045 __pointer = ap.__pointer; 00046 return *this; 00047 } 00048 00049 AutoPointer() 00050 : __pointer(0) 00051 { 00052 ; 00053 } 00054 00055 AutoPointer(const AutoPointer<PointedType>& ap) 00056 : __pointer(ap.__pointer) 00057 { 00058 ; 00059 } 00060 00061 AutoPointer(PointedType* p) 00062 : __pointer(p) 00063 { 00064 ; 00065 } 00066 00067 ~AutoPointer() 00068 { 00069 if (__pointer != 0) 00070 delete __pointer; 00071 } 00072 }; 00073 00074 #endif // AUTOPOINTER_HPP 00075
1.5.6