khtml Library API Documentation

shared.h

00001 #ifndef SHARED_H
00002 #define SHARED_H
00003 
00004 namespace khtml {
00005 
00006 template<class type> class Shared
00007 {
00008 public:
00009     Shared() { _ref=0; /*counter++;*/ }
00010     ~Shared() { /*counter--;*/ }
00011 
00012     void ref() { _ref++;  }
00013     void deref() { 
00014         if(_ref) _ref--; 
00015         if(!_ref)
00016             delete static_cast<type *>(this); 
00017     }
00018     bool hasOneRef() { //kdDebug(300) << "ref=" << _ref << endl;
00019         return _ref==1; }
00020 
00021     int refCount() const { return _ref; }
00022 //    static int counter;
00023 protected:
00024     unsigned int _ref;
00025 };
00026 
00027 template<class type> class TreeShared
00028 {
00029 public:
00030     TreeShared() { _ref = 0; m_parent = 0; /*counter++;*/ }
00031     TreeShared( type *parent ) { _ref=0; m_parent = parent; /*counter++;*/ }
00032     ~TreeShared() { /*counter--;*/ }
00033 
00034     void ref() { _ref++;  }
00035     void deref() { 
00036         if(_ref) _ref--; 
00037         if(!_ref && !m_parent) {
00038             delete static_cast<type *>(this); 
00039         }
00040     }
00041     bool hasOneRef() { //kdDebug(300) << "ref=" << _ref << endl;
00042         return _ref==1; }
00043 
00044     int refCount() const { return _ref; }
00045 //    static int counter;
00046 
00047     void setParent(type *parent) { m_parent = parent; }
00048     type *parent() const { return m_parent; }
00049 private:
00050     unsigned int _ref;
00051 protected:
00052     type *m_parent;
00053 };
00054 
00055 }
00056 
00057 #endif
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Jan 28 13:34:44 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001