libkdenetwork Library API Documentation

shared.h

00001 /* shared.h - internal tool for refcounting -*- c++ -*- 00002 Copyright (C) 2003 Klarälvdalens Datakonsult AB 00003 00004 This file is part of GPGME++. 00005 00006 GPGME++ is free software; you can redistribute it and/or modify it 00007 under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 GPGME++ is distributed in the hope that it will be useful, but 00012 WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with GPGME; if not, write to the Free Software Foundation, 00018 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA. 00019 */ 00020 00021 #ifndef __GPGMEPP_SHARED_H__ 00022 #define __GPGMEPP_SHARED_H__ 00023 00024 #include <cassert> 00025 00026 namespace GpgME { 00027 00028 class Shared { 00029 protected: 00030 Shared() : mRefCount( 0 ) {} 00031 virtual ~Shared() { 00032 assert( mRefCount <= 0 ); 00033 } 00034 00035 public: 00036 int ref() { return ++mRefCount; } 00037 int deref() { return unref(); } 00038 int unref() { 00039 if ( --mRefCount <= 0 ) { 00040 delete this; 00041 return 0; 00042 } 00043 return mRefCount; 00044 } 00045 int refCount() { return mRefCount; } 00046 00047 private: 00048 int mRefCount; 00049 }; 00050 00051 } 00052 00053 00054 #endif // __GPGMEPP_SHARED_H__
KDE Logo
This file is part of the documentation for libkdenetwork Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 27 12:48:47 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003