]>
git.saurik.com Git - apt.git/blob - apt-pkg/contrib/weakptr.h
   1 /* weakptr.h - An object which supports weak pointers. 
   3  * Copyright (C) 2010 Julian Andres Klode <jak@debian.org> 
   5  * This program is free software; you can redistribute it and/or modify 
   6  * it under the terms of the GNU General Public License as published by 
   7  * the Free Software Foundation; either version 2 of the License, or 
   8  * (at your option) any later version. 
  10  * This program is distributed in the hope that it will be useful, 
  11  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  13  * GNU General Public License for more details. 
  15  * You should have received a copy of the GNU General Public License 
  16  * along with this program; if not, write to the Free Software 
  17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
  21 #ifndef WEAK_POINTER_H 
  22 #define WEAK_POINTER_H 
  28  * Class for objects providing support for weak pointers. 
  30  * This class allows for the registration of certain pointers as weak, 
  31  * which will cause them to be set to NULL when the destructor of the 
  36     std::set
<WeakPointable
**> pointers
; 
  41      * Add a new weak pointer. 
  43     inline void AddWeakPointer(WeakPointable
** weakptr
) { 
  44        pointers
.insert(weakptr
); 
  48      * Remove the weak pointer from the list of weak pointers. 
  50     inline void RemoveWeakPointer(WeakPointable 
**weakptr
) { 
  51        pointers
.erase(weakptr
); 
  55      * Deconstruct the object, set all weak pointers to NULL. 
  58         std::set
<WeakPointable
**>::iterator iter 
= pointers
.begin(); 
  59         while (iter 
!= pointers
.end()) 
  64 #endif // WEAK_POINTER_H