Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | Related Pages

refobj.h

00001 /* 00002 libwftk - Worldforge Toolkit - a widget library 00003 Copyright (C) 2002 Malcolm Walker <malcolm@worldforge.org> 00004 Based on code copyright (C) 1999-2002 Karsten Laux 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Lesser General Public 00008 License as published by the Free Software Foundation; either 00009 version 2.1 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Lesser General Public License for more details. 00015 00016 You should have received a copy of the GNU Lesser General Public 00017 License along with this library; if not, write to the 00018 Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00019 Boston, MA 02111-1307, SA. 00020 */ 00021 00022 #ifndef WFTK_REF_OBJ_H 00023 #define WFTK_REF_OBJ_H 00024 00025 #include <cassert> 00026 #include <SDL/SDL_types.h> // for Uint32 00027 00028 namespace wftk { 00029 00030 class RefCountObj { 00031 public: 00032 // a 0 refcount, but not deleted, acts as a 'floating' reference 00033 RefCountObj(bool floating) : refcount_(floating ? 0 : 1) {} 00034 virtual ~RefCountObj() {} 00035 00037 void ref() {++refcount_;} 00039 void unref() {assert(refcount_); if(!--refcount_) delete this;} 00041 00048 void sink() {if(!refcount_) delete this;} 00049 00050 private: 00051 // unimplemented 00052 RefCountObj(const RefCountObj&); 00053 RefCountObj& operator=(const RefCountObj&); 00054 00055 Uint32 refcount_; 00056 }; 00057 00058 } // namespace 00059 00060 #endif // WFTK_REF_OBJ_H

Generated Mon Sep 6 21:58:16 2004.
Copyright © 1998-2003 by the respective authors.

This document is licensed under the terms of the GNU Free Documentation License and may be freely distributed under the conditions given by this license.