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.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 22:37:07 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003